1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for(int i = 0; i < n - 1; i ++) {for(int j = i + 1; j < n; j ++) {if(nums[i] + nums[j] == target) return {i, j}; }}return {0, 0};}
};
49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词
class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {vector<vector<string>> ans;unordered_map<string, vector<string>> groups;for(auto x : strs) {string s = x;sort(s.begin(), s.end());groups[s].emplace_back(x);}for(auto it = groups.begin(); it != groups.end(); it ++) {ans.emplace_back(it->second);}return ans;}
};
总结
对于STL的运用不够熟练,把问题复杂化了
128. 最长连续序列
class Solution {
public:int longestConsecutive(vector<int>& nums) {sort(nums.begin(), nums.end());set<int> c(nums.begin(), nums.end());nums.assign(c.begin(), c.end()); int n = nums.size();int max_l = 0;for(int i = 0; i < n; i ++) {while(max_l + i < n && nums[max_l + i] - nums[i] == max_l) {max_l ++;}}return max_l;}
};
283. 移动零
class Solution {
public:void moveZeroes(vector<int>& nums) {int cnt = 0;int n = nums.size();for(int i = 0; i < nums.size(); ){if(!nums[i]) {cnt ++;// auto iter = std::remove(nums.begin(), nums.end(), 0);auto iter = nums.erase(nums.begin() + i);}else {i++;}}while(cnt) {cnt--;nums.push_back(0);}return ;}
};