代码挑战:找到单一数字|Rust
        【摘要】 Given a non-empty array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it without usi...
    
    
    
    Given a non-empty array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
Example 1:
Input: [2,2,1]
Output: 1
Example 2:
Input: [4,1,2,1,2]
Output: 4方案1:
  impl Solution {
 
 
 
      pub fn single_number(nums: Vec<i32>) -> i32 {
 
 
 
          let mut result = nums[0]; 
 
 
 
          for (pos, e) in nums.iter().enumerate() {
 
 
 
              if pos != 0 {
 
 
 
                  result ^= e;
 
 
 
              }
 
 
 
          }
 
 
 
          return result;
 
 
 
      }
 
 
 
  }
 
 
方案2:
  impl Solution {
 
 
 
      pub fn single_number(nums: Vec<i32>) -> i32 {
 
 
 
          let mut hs = std::collections::HashSet::new();
 
 
 
          for (_pos, e) in nums.iter().enumerate() {
 
 
 
             if hs.contains(e) {
 
 
 
                 hs.remove(&e);
 
 
 
             }
 
 
 
             else {
 
 
 
                 hs.insert(e);
 
 
 
             }
 
 
 
          }
 
 
 
          for x in hs.iter() {
 
 
 
              return **x;
 
 
 
          }
 
 
 
          return 0;
 
 
 
      }
 
 
 
  }
 
 
测试案例:
      #[test]
 
 
 
      fn test1() {
 
 
 
          let vec = vec![2,2,1];
 
 
 
          let result = Solution::single_number(vec);
 
 
 
          assert_eq!(result, 1);
 
 
 
      }
 
 
 
      #[test]
 
 
 
      fn test2() {
 
 
 
          let vec = vec![4, 1, 2, 1, 2];
 
 
 
          let result = Solution::single_number(vec);
 
 
 
          assert_eq!(result, 4);
 
 
 
      }
 
 
 
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        - 点赞
- 收藏
- 关注作者
 
             
           
评论(0)