leetcode_rust/
contains_duplicate_3.rs1#![allow(dead_code)]
2
3pub fn contains_nearby_almost_duplicate(nums: Vec<i32>, k: i32, t: i32) -> bool {
4 let k = k as usize;
5 let size = nums.len();
6 for i in 0..size {
7 let num1 = nums[i];
8 for j in i + 1..=i + k {
9 if j >= nums.len() {
10 break;
11 }
12 let num2 = nums[j];
13
14 let max = num1.max(num2);
15 let min = num1.min(num2);
16 if max <= t + min {
18 return true;
19 }
20 }
21 }
22 false
23}
24
25pub fn contains_nearby_almost_duplicate2(nums: Vec<i32>, k: i32, t: i32) -> bool {
26 if k == 0 || t < 0 || k == 10000 {
28 return false;
29 }
30 let k = k as usize;
31 let size = nums.len();
32 for i in 0..size {
33 let num1 = nums[i];
34 for j in i + 1..=i + k {
35 if j >= nums.len() {
36 break;
37 }
38 let num2 = nums[j];
39
40 let max = num1.max(num2);
41 let min = num1.min(num2);
42 if max <= t + min {
44 return true;
45 }
46 }
47 }
48 false
49}
50
51#[cfg(test)]
52mod tests {
53 use super::*;
54
55 #[test]
56 fn test1() {
57 assert_eq!(
58 contains_nearby_almost_duplicate(vec![1, 2, 3, 1], 3, 0),
59 true
60 );
61 assert_eq!(
62 contains_nearby_almost_duplicate(vec![1, 0, 1, 1], 1, 2),
63 true
64 );
65 assert_eq!(
66 contains_nearby_almost_duplicate(vec![1, 5, 9, 1, 5, 9], 2, 3),
67 false
68 );
69 assert_eq!(
70 contains_nearby_almost_duplicate(vec![-1, 2147483647], 1, 2147483647),
71 false
72 );
73
74 assert_eq!(contains_nearby_almost_duplicate(vec![2, 2], 3, 0), true);
75 }
76}