diff --git a/rust/Two Pointers/pair_sum_sorted.rs b/rust/Two Pointers/pair_sum_sorted.rs new file mode 100644 index 0000000..66c0c25 --- /dev/null +++ b/rust/Two Pointers/pair_sum_sorted.rs @@ -0,0 +1,17 @@ +pub fn pair_sum_sorted(nums: &[i32], target: i32) -> Vec { + let mut left = 0; + let mut right = nums.len() - 1; + + while left < right { + let sum = nums[left] + nums[right]; + if sum < target { + left += 1; + } else if sum > target { + right -= 1; + } else { + return vec![left, right]; + } + } + + vec![] +} diff --git a/rust/Two Pointers/pair_sum_sorted_brute_force.rs b/rust/Two Pointers/pair_sum_sorted_brute_force.rs new file mode 100644 index 0000000..5a7024a --- /dev/null +++ b/rust/Two Pointers/pair_sum_sorted_brute_force.rs @@ -0,0 +1,13 @@ +pub fn pair_sum_sorted_brute_force(nums: &[i32], target: i32) -> Vec { + let n = nums.len(); + + for i in 0..n { + for j in (i + 1)..n { + if nums[i] + nums[j] == target { + return vec![i, j]; + } + } + } + + vec![] +} diff --git a/rust/Two Pointers/triplet_sum_brute_force.rs b/rust/Two Pointers/triplet_sum_brute_force.rs new file mode 100644 index 0000000..c782daf --- /dev/null +++ b/rust/Two Pointers/triplet_sum_brute_force.rs @@ -0,0 +1,20 @@ +use std::collections::HashSet; + +pub fn triplet_sum_brute_force(nums: &[i32]) -> Vec> { + let n = nums.len(); + let mut triplets: HashSet> = HashSet::new(); + + for i in 0..n { + for j in (i + 1)..n { + for k in (j + 1)..n { + if nums[i] + nums[j] + nums[k] == 0 { + let mut triplet = vec![nums[i], nums[j], nums[k]]; + triplet.sort(); + triplets.insert(triplet); + } + } + } + } + + triplets.into_iter().collect() +}