【LeetCode】0136. 只出现一次的数字
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode】0136. 只出现一次的数字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目要求
圖解示例
算法思想
方法一:使用map記錄的方式
方法二:使用異或的方法
異或有如下計算法則:
完整代碼
方法一:
class Solution { public:int singleNumber(vector<int>& nums) {map<int,int> hash_map;for(int i = 0; i < nums.size(); i++) {if(hash_map.find(nums[i])!=hash_map.end()) {hash_map[nums[i]] = 2;} else {hash_map[nums[i]] = 1;}}map<int,int>::iterator it;for(it = hash_map.begin(); it != hash_map.end(); it++) {if(it->second==1) return it->first;}return 0;} };方法二:
class Solution { public:int singleNumber(vector<int>& nums) {int ans = 0;for (auto e: nums) ans ^= e;return ans;} };(PS:看到這個解法,我當時就笑了)
設計分析
方法一:
時間復雜度:O(3n/2)~O(n)
空間復雜度:O(n/2)~O(n)
方法二:
時間復雜度:O(n)
空間復雜度:O(1)
提交結果
方法一:
方法二:
若有其他解法,歡迎評論區補充。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【LeetCode】0136. 只出现一次的数字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Git】本地仓库上传到github免密
- 下一篇: 【LeetCode】0938. 二叉搜索