## 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:3Explanation:For the given array,`arr[0] = -10, arr[1] = -5, arr[2] = 0, arr[3] = 3`

, thus the output is 3.

**Example 2:**

Input:arr = [0,2,5,8,17]Output:0Explanation:`arr[0] = 0`

, thus the output is 0.

**Example 3:**

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

that`arr[i] == i`

, thus the output is -1.

**Constraints:**

`1 <= arr.length < 10`

^{4}`-10`

^{9}<= arr[i] <= 10^{9}

**Follow up:**The

`O(n)`

solution is very straightforward. Can we do better?## Rust Solution

```
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);
}
```

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