1037. Valid Boomerang

A boomerang is a set of 3 points that are all distinct and not in a straight line.

Given a list of three points in the plane, return whether these points are a boomerang.

 

Example 1:

Input: [[1,1],[2,3],[3,2]]
Output: true

Example 2:

Input: [[1,1],[2,2],[3,3]]
Output: false

 

Note:

  1. points.length == 3
  2. points[i].length == 2
  3. 0 <= points[i][j] <= 100
 

Rust Solution

struct Solution;

impl Solution {
    fn is_boomerang(points: Vec<Vec<i32>>) -> bool {
        points[0][0] * (points[1][1] - points[2][1])
            + points[1][0] * (points[2][1] - points[0][1])
            + points[2][0] * (points[0][1] - points[1][1])
            != 0
    }
}

#[test]
fn test() {
    let points: Vec<Vec<i32>> = vec_vec_i32![[1, 1], [2, 3], [3, 2]];
    assert_eq!(Solution::is_boomerang(points), true);
    let points: Vec<Vec<i32>> = vec_vec_i32![[1, 1], [2, 2], [3, 3]];
    assert_eq!(Solution::is_boomerang(points), false);
}

Having problems with this solution? Click here to submit an issue on github.