Skip to content

Commit f39f5b3

Browse files
committed
q167
1 parent afb31bb commit f39f5b3

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

double-pointer/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
mod q977;
2-
mod q283;
2+
mod q283;
3+
mod q167;

double-pointer/src/q167.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
struct Solution ();
2+
impl Solution {
3+
pub fn two_sum(numbers: Vec<i32>, target: i32) -> Vec<i32> {
4+
let mut x = 0;
5+
let mut y = numbers.len() - 1;
6+
7+
loop {
8+
let v = numbers[x] + numbers[y];
9+
if v > target {
10+
y -= 1
11+
} else if v < target {
12+
x += 1
13+
} else {
14+
return vec![x as i32 + 1, y as i32 + 1];
15+
}
16+
}
17+
18+
19+
}
20+
21+
pub fn two_sum1(numbers: Vec<i32>, target: i32) -> Vec<i32> {
22+
use std::collections::HashMap;
23+
let mut temp= HashMap::new();
24+
25+
for (i, x) in numbers.iter().enumerate() {
26+
if temp.contains_key(&(target - x)) {
27+
return vec![*temp.get(&(target - x)).unwrap() as i32 + 1 , i as i32 + 1]
28+
} else {
29+
temp.insert(x, i);
30+
}
31+
}
32+
33+
vec![]
34+
}
35+
}
36+
37+
#[cfg(test)]
38+
mod tests {
39+
use super::*;
40+
41+
#[test] fn test_1() {
42+
assert_eq!(Solution::two_sum(vec![2,7,11,15], 9), vec![1, 2])
43+
}
44+
45+
46+
}

0 commit comments

Comments
 (0)