安徽网站设计找哪家,西安十大网站制作公司,wordpress翻页相同内容,建设银行电子银行网站
#x1f525;个人主页#xff1a;guoguoqiang. #x1f525;专栏#xff1a;leetcode刷题 1.只出现一次的数字 这道题很简单#xff0c;我们只需要遍历一次数组即可通过异或运算实现。(一个数与自身异或结果为0#xff0c;任何数与0异或还是它本身) class Solut…
个人主页guoguoqiang. 专栏leetcode刷题 1.只出现一次的数字 这道题很简单我们只需要遍历一次数组即可通过异或运算实现。(一个数与自身异或结果为0任何数与0异或还是它本身) class Solution {
public:int singleNumber(vectorint nums) {int value0;for(auto e:nums){value^e;}return value;}
};2.杨辉三角 这个题需要创建一个二维数组开辟空间 vectorvector vv , vv.resize(numRows) class Solution {
public:vectorvectorint generate(int numRows) {vectorvectorint vv;vv.resize(numRows);for(int i0;inumRows;i){vv[i].resize(i1,0);vv[i][0]vv[i][vv[i].size()-1]1;}for(int i0;inumRows;i){for(int j0;ji;j){if(vv[i][j]0){vv[i][j]vv[i-1][j]vv[i-1][j-1];}}}return vv;}
};3.删除有序数组中的重复项 双指针如果fast的前一个与fast相同则对前面的值进行修改。 class Solution {
public:int removeDuplicates(vectorint nums) {int nnums.size();if(n0){return 0;}int slow1,fast1;while(fastn){if(nums[fast-1]!nums[fast]){nums[slow]nums[fast];slow;}fast;}return slow;}
};4.只出现一次的数组 二 //方法一 异或
class Solution {
public:int singleNumber(vectorint nums) {int ones 0, twos 0; for (int num : nums) {ones (ones ^ num) ~twos;twos (twos ^ num) ~ones;}return ones;}
};
class Solution {
public:int singleNumber(vectorint nums) {unordered_mapint,intfreq;for(int num:nums){freq[num];}int ans0;for(auto [num,occ]:freq){if(occ1){ansnum;break;}}return ans;}
};5.只出现一次的数字 三 class Solution {
public:vectorint singleNumber(vectorint nums) {//哈希表vectorint ans;unordered_mapint,intfreq;for(int num:nums){freq[num];}for(auto [num,occ]:freq){if(occ1){ans.push_back(num);}}return ans;}
};class Solution {
public:vectorint singleNumber(vectorint nums) {// 第一步对所有元素进行异或最终的结果就是两个只出现一次数的异或结果int diff 0;for (int num : nums) {diff ^ num;}// 找到diff中任何为1的位可以使用diff -diff快速找到// 这个操作可以隔离出diff最右端的1unsigned int diff_unsigned diff;diff_unsigned -diff_unsigned;// 使用找到的这一位将数组中的数字分成两组vectorint results(2, 0); // 最终结果for (int num : nums) {if ((num diff_unsigned) 0) {// 第一组与diff_unsigned对应位为0results[0] ^ num;} else {// 第二组与diff_unsigned对应位为1results[1] ^ num;}}return results;}
};
6.电话号码的字母组合 class Solution {//回溯算法。
public:vectorstring letterCombinations(string digits) {if(digits.empty()) return{};vectorstring mappings { // 数字到字母的映射, , abc, def, // 0,1,2,...ghi, jkl, mno,pqrs, tuv, wxyz};vectorstring result;string current;backtrack(result, digits, 0, current, mappings);return result;}private:void backtrack(vectorstring result, const string digits, int index, string current, const vectorstring mappings) {if(indexdigits.length()){result.push_back(current);return;}string letters mappings[digits[index] - 0]; // 获取当前数字对应的所有字母for (char letter : letters) { // 遍历这些字母current.push_back(letter); // 添加当前的字母backtrack(result, digits, index 1, current, mappings); // 继续处理下一个数字current.pop_back(); // 回溯移除当前字母以便尝试下一个字母}}
};