diff --git a/src/main.rs b/src/main.rs index efcba29..e09a05a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,35 +2,18 @@ use std::cmp::max; struct Solution; impl Solution { - pub fn longest_subarray(nums: Vec) -> i32 { - let mut ans = 0; - let mut ans_val = 0; - let mut last = 0; - let mut count = 0; - for i in 0..nums.len() { - if nums[i] != last { - if ans_val < last { - ans_val = last; - ans = count; - }else if ans_val == last { - ans = max(count,ans); - } - last = nums[i]; - count = 1; - } else { - count += 1; - } + pub fn does_valid_array_exist(derived: Vec) -> bool { + let mut a = 0; + let mut b = 1; + for i in derived.iter() { + a ^= i; + b ^= i; } - if ans_val < last { - ans = count; - }else if ans_val == last { - ans = max(count,ans); - } - ans + a == 0 || b == 1 } } fn main() { - let sl = Solution::longest_subarray(vec![96317,96317,96317,96317,96317,96317,96317,96317,96317,279979]); + let sl = Solution::does_valid_array_exist(vec![1,1,0]); println!("{:?}", sl); }