专业英文网站建设,办公室装修设计理念简短范文,wordpress标签页面模板,做网站公司怎么赚钱目录
两数之和
字母异位词分组
最长连续序列 力扣热题100——哈希算法
两数之和 给定一个整数数组 nums 和一个整数目标值 target#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答…目录
两数之和
字母异位词分组
最长连续序列 力扣热题100——哈希算法
两数之和 给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那 两个 整数并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1 输入nums [2,7,11,15], target 9
输出[0,1]
解释因为 nums[0] nums[1] 9 返回 [0, 1] 。示例 2 输入nums [3,2,4], target 6
输出[1,2]示例 3 输入nums [3,3], target 6
输出[0,1]class Solution {
public:vectorint twoSum(vectorint nums, int target) {mapint,int m;for(int i0;inums.size();i){auto it m.find(target-nums[i]);
//find的返回值是{k,v}查找的是k也就是说ktarget-nums[i]if(it ! m.end()){return{it-second,i};//返回v这里的含义是index}m[nums[i]]i;//如果没有找到就把这个数添加进哈希表}return{};}
};
字母异位词分组 给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [eat, tea, tan, ate, nat, bat]
输出: [[bat],[nat,tan],[ate,eat,tea]] 示例 2: 输入: strs []
输出: [[]]示例 3: 输入: strs [a]
输出: [[a]] class Solution {
public:vectorvectorstring groupAnagrams(vectorstring strs) {int nstrs.size();
//在这里执行一次静态的计算会比在循环中使用strs.size()节省时间unordered_mapstring,vectorstringm;
//vector:可动态扩展列表;unordered_map比map节省内存for(int i 0;in;i){string str strs[i];sort(str.begin(),str.end());m[str].push_back(strs[i]);}vectorvectorstringres;for(auto itm.begin();it!m.end();it){//灵活的开始与结束res.push_back(it-second);}return res;}
};
最长连续序列 给定一个未排序的整数数组 nums 找出数字连续的最长序列不要求序列元素在原数组中连续的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1 输入nums [100,4,200,1,3,2]
输出4
解释最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 示例 2 输入nums [0,3,7,2,5,8,4,6,0,1]
输出9 class Solution {
public:int longestConsecutive(vectorint nums) {//find x,x1,x2....xy;leny-x1unordered_setint m;for(auto i : nums) m.insert(i);int res0;for(auto x : m){//C11访问列表元素方法并自动赋值if(!m.count(x-1)){//确认x为起始元素,if x-1 exist, x is not beginint y x; // ues y as end figerwhile(m.count(y1)) y;resmax(res,y-x1); } }return res;
}
};