Single Number
来源:互联网 发布:越狱铃声软件 编辑:程序博客网 时间:2024/06/06 18:15
https://leetcode.com/problems/single-number/
这是来自于leetcode上的一道题目。这里主要强调的是解决题目时候必须数学先行。题目虽然很简单,不假思考就可以给出几个很直观的答案,但是由于时间复杂度是O(nlogn)空间复杂度是O(n)
Given an 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?
class Solution {public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i=0;i<nums.size();i++) { if(i+1<nums.size()) if(nums[i]==nums[i+1]) i++; else return nums[i]; if(i+1==nums.size()) return nums[i]; } }};
第二种方法是采用unordered_map的方式进行存储
class Solution {public: int singleNumber(vector<int>& nums) { unordered_map<int ,int>umap; for(int i=0;i<nums.size();i++) umap[nums[i]]++; for(auto it:umap) if(it.second==1) return it.first; }};
第三种方法是由于因为只有一个数不重复,其他每个数都出现两次。那么进行异或操作之后就为0;
class Solution {public: int singleNumber(vector<int>& nums) { int res=0; for(int i=0;i<nums.size();i++) res^=nums[i]; return res; }};
所以做题目时候,可以先把问题当成数学问题会怎么算,就是忽略了数据结构
如果能直接给出
result=f(已知条件)
这样的函数,那么问题就会简单很多!
1 0
- Single Number
- single number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- Single Number
- single number
- Single Number
- Single Number
- Single Number
- [leetcode] Construct Binary Tree from Inorder and Postorder Traversal
- C和C++程序员面试秘籍
- MySQL按照汉字拼音字母排序
- 求一个数据结构C语言 关于关键字统计源代码
- 模板-高精度A+B,A-B
- Single Number
- SeqList.
- nefu1009消灭兔子 优先队列
- 苹果开发 笔记(38)UIImagePickerController
- WEB服务器与应用服务器
- hdu 1033 (bit masking, utilization of switch, '\0' as end of c string)
- java之弱引用
- 黑马程序员-排序(冒泡,选择,快速排序)
- 算法学习之暴力求解