LeetCode 2016 338,347,343
来源:互联网 发布:正德福飞机模型淘宝 编辑:程序博客网 时间:2024/06/04 00:55
338 Counting Bits
class Solution {public: vector<int> countBits(int num) { vector<int> ans; ans.clear(); ans.resize(num+1); ans[0]=0; int p; if (num<=0) return ans; for(p=1;p*2<=num;p*=2) { for(int i=0,j=p;i<p;(i++,j++)) { ans[j]=ans[i]+1; } } for(int i=0,j=p;j<=num;(i++,j++)) { ans[j]=ans[i]+1; } return ans; }};
347 Top K Frequent Elements
1. 我的//负数也有可能,比如[-1,-1]//题意理解错了,不是重复出现k次以上的,而是重复出现的次数按照从大到小排序//的前k个。。我勒个去。。好久不刷题,理解能力也退化了。。囧了个囧//所以还是用map吧.class Solution {public: vector<int> topKFrequent(vector<int>& nums, int k) { vector<int>ans; ans.clear(); map<int,int> freHash; freHash.clear(); int len=nums.size(); for(int i=0;i<len;i++) { if (freHash.find(nums[i])!=freHash.end()) freHash[nums[i]]++; else freHash[nums[i]]=1; } vector<pair<int,int> > result; for(map<int,int>::iterator i=freHash.begin();i!=freHash.end();i++) { result.push_back(make_pair(i->second,i->first )); } sort(result.begin(),result.end()); for(int i=0;i<result.size();i++) { cout<<result[i].first<<" "; cout<<result[i].second<<endl; } for(int i=result.size()-1,j=0;i>=0 && j<k;i--,j++) ans.push_back(result[i].second); return ans; }};2. 讨论里面一个只有6行的神Codeclass Solution { public: vector<int> topKFrequent(vector<int>& nums, int k) { unordered_map<int, int> my_map; for_each (begin(nums), end(nums), [&my_map](int i){ my_map[i]++;}); vector<pair<int, int>> pv(begin(my_map), end(my_map)); nth_element(begin(pv), begin(pv)+k, end(pv), [](pair<int, int> a, pair<int, int> b){return a.second > b.second;}); vector<int> result; transform(begin(pv), begin(pv)+k, back_inserter(result), [](pair<int, int> a){return a.first;}); return result; } };
343 Integer Break
小学奥数题,我仍旧记得那个口诀“要三不要二,要二不要一”先把n整除三余数为零,则把n都拆成3余数为1,则拿一个3出来,加上这个余数1,拆成2个2余数为2,则要这个2class Solution {public: int integerBreak(int n) { if (n==2) return 1; if (n==3) return 2; int p=n/3; int remain=n-p*3; if (remain==0) return pow3(p); if (remain==1) return pow3(p-1)*4; if (remain==2) return pow3(p)*2; return 0; } int pow3(int p) { int ans=1; for(int i=1;i<=p;i++) ans*=3; return ans; }};
0 0
- LeetCode 2016 338,347,343
- leetcode 347
- LEETCODE 338
- leetcode 338
- LeetCode 338
- LeetCode 338
- leetcode 343
- Leetcode no. 347
- 【LeetCode-338】Counting Bits
- leetcode-338-Counting Bits
- Leetcode 338 Counting Bits
- LeetCode 338 :Counting Bits
- [leetcode-338]Counting Bits
- 【LeetCode-338】 Counting Bits
- LeetCode 338 Counting Bits
- Counting Bits leetcode 338
- [LeetCode 338] Counting Bits
- LeetCode-338:Counting Bits
- ACM 数论 兔子的烦恼(二)
- 3D Touch (github下载源码)
- 1、C语言的常量简易理解
- 用MVP架构开发Android应用
- Effective C++ 3e----new & delete(八)条款2:写了placement new也要写placement delete
- LeetCode 2016 338,347,343
- Java之旅--跨域(CORS)
- 《深入浅出Node.js》学习笔记——(三)异步I/O
- c语言的数据类型在oc中的对应
- 从HttpServletRequest获取各种路径总结
- Python模块学习——optparse
- 最长的连续相同字符的字符串和最长连续不相同字符的子字符串问题
- java-IO操作——使用字节流读写数据
- 三种主流Web架构