1064. Fixed Point

Given an array of distinct integers `arr`, where `arr` is sorted in ascending order, return the smallest index `i` that satisfies `arr[i] == i`. If there is no such index, return `-1`.

Example 1:

```Input: arr = [-10,-5,0,3,7]
Output: 3
Explanation: For the given array, `arr = -10, arr = -5, arr = 0, arr = 3`, thus the output is 3.```

Example 2:

```Input: arr = [0,2,5,8,17]
Output: 0
Explanation: `arr = 0`, thus the output is 0.```

Example 3:

```Input: arr = [-10,-5,3,4,7,9]
Output: -1
Explanation: There is no such `i` that `arr[i] == i`, thus the output is -1.```

Constraints:

• `1 <= arr.length < 104`
• `-109 <= arr[i] <= 109`

Follow up: The `O(n)` solution is very straightforward. Can we do better?

1064. Fixed Point
``````struct Solution;

impl Solution {
fn fixed_point(a: Vec<i32>) -> i32 {
for i in 0..a.len() {
if i as i32 == a[i] {
return i as i32;
}
}
-1
}
}

#[test]
fn test() {
assert_eq!(Solution::fixed_point(vec![-10, -5, 0, 3, 7]), 3);
assert_eq!(Solution::fixed_point(vec![0, 2, 5, 8, 17]), 0);
assert_eq!(Solution::fixed_point(vec![-10, -5, 3, 4, 7, 9]), -1);
}
``````