Skip to main content
Back to problems
#469
Medium Algorithms

Convex polygon

Array Math Geometry
40.2% acceptance
Mar 31, 2026
103
242

No description available.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
impl Solution {
  pub fn is_convex(points: Vec<Vec<i32>>) -> bool {
    let n = points.len();
    let mut last_sign = 0i64;
    for i in 0..n {
      let p1 = &points[i];
      let p2 = &points[(i + 1) % n];
      let p3 = &points[(i + 2) % n];
      let dx1 = (p2[0] - p1[0]) as i64;
      let dy1 = (p2[1] - p1[1]) as i64;
      let dx2 = (p3[0] - p2[0]) as i64;
      let dy2 = (p3[1] - p2[1]) as i64;
      let cross = dx1 * dy2 - dy1 * dx2;
      if cross != 0 {
        if last_sign == 0 {
          last_sign = cross.signum();
        } else if cross.signum() != last_sign {
          return false;
        }
      }
    }
    true
  }
}