目录

  • 找树左下角的值
  • 长度最小的子数组
  • 组合总和 III
  • 只出现一次的数字 III
  • 丑数
  • 丑数 II

找树左下角的值


分析:
  层序遍历:如果队列为空说明进行到了最后一层,返回第一个元素即可。
代码:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*> que;que.push(root);while(!que.empty()) {int n = que.size();vector<int> temp;for(int i = 0; i < n; i++) {TreeNode* fr = que.front();temp.push_back(fr->val);que.pop();if(fr->left) {que.push(fr->left);}if(fr->right) {que.push(fr->right);}}if(que.empty()) {  //最后一层return temp[0];}}return 0;}
};

长度最小的子数组


方法一:
  暴力枚举:从0开始枚举左边界,然后逐个累加判断。
代码:

class Solution {public:int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size();if(n == 0) {return 0;}int res = INT_MAX;for(int i = 0; i < n; i++) {int sum = 0;for(int j = i; j < n; j++) {sum += nums[j];if(sum >= target) {res = min(res, j - i + 1);break;}}}return res == INT_MAX ? 0 : res;}
};

方法二:
  滑动窗口:初始left和right都指向0处,然后移动right,移动过程中求和,如果当前[left, right]区间和满足要求,则更新区间长度。随后left右移,移动过程中可能还是满足条件,也需要更新结果。当移动到当前区间不满足条件时left停止移动,right开始继续移动。
代码:

class Solution {public:int minSubArrayLen(int target, vector<int>& nums) {int n = nums.size();if(n == 0) {return 0;}int res = INT_MAX;int left = 0, right = 0;int sum = 0;while(right < n) {while(right < n && sum < target) {sum += nums[right];right++;}right--;if(sum >= target) {while(sum >= target) {res = min(res, right - left + 1);sum -= nums[left];left++;}}else {break;}right++;}return res == INT_MAX ? 0 : res;}
};

组合总和 III


分析:
  回溯。
代码:

class Solution {private:vector<vector<int>> result;vector<int> path;void backtracking(int targetSum, int k, int sum, int startIndex) {if (path.size() == k) {if (sum == targetSum) {result.push_back(path);return;}}for (int i = startIndex; i <= 9; i++) {sum += i;path.push_back(i);backtracking(targetSum, k, sum, i + 1);sum -= i; // 回溯path.pop_back();}}public:vector<vector<int>> combinationSum3(int k, int n) {backtracking(n, k, 0, 1);return result;}
};

只出现一次的数字 III


方法一:
  哈希表。
代码:

class Solution {public:vector<int> singleNumber(vector<int>& nums) {unordered_map<int, int> mp;vector<int> res;for(int x : nums) {mp[x]++;}for(auto& [x, y] : mp) {if(y == 1) {res.push_back(x);}}return res;}
};

位运算:
  设结果为a b,由于两个相同数异或为0,而任何数异或0为本身,所以我们将数组中所有数进行异或操作,最终结果就为a ^ b,记为ret。我们可以将所有数分成两组,所有相同的数在一组,ab在不同的一组,最终分组结果类似于:{1 1 2 2 3 3 a}和{4 4 7 7 8 8 b},这样两组异或的结果就分别为a和b。为此,我们可以以ret中某一个不为0的位x(记为00010000)与各个数进行与运算,为0分在一组为1分在另一组:两个相同的数与上0001000,其结果肯定一致所以被分在同一组,对于a b,由于位x处有ai ^ bi == 1,说明ai和bi必然一个为1一个为0,所以a b可以被分在不同组。
代码:

class Solution {public:vector<int> singleNumber(vector<int>& nums) {int a = 0, b = 0;int ret = 0;for(int x : nums) {ret ^= x;   //求出所有数的异或,ret = a ^ b}int div = 1;while((div & ret) == 0) {div <<= 1;  //找到ret从低位到高位的第一个1}for(int x : nums) {if(x & div) {a ^= x;  //分组,每一组的异或即为答案}else {b ^= x;}}return {a, b};}
};

丑数


分析:
  将数不断除以2 3 5,如果最后为1说明就是丑数,否则不是。
代码:

class Solution {public:bool isUgly(int n) {if(n == 1) {return true;}if(n <= 0) {return false;}int factors[3] = {2, 3, 5};for(int x : factors) {while(n % x == 0) {n /= x;}}return n == 1;}
};

丑数 II


分析:
  思路类似于:蓝桥杯第九届【省赛C/C++ A组】T4:第几个幸运数
代码:

class Solution {public:int nthUglyNumber(int n) {int factors[3] = {2, 3, 5};priority_queue<long long, vector<long long>, greater<long long>> que;set<long long> s;que.push(1);s.insert(1);int cnt = 0, res = 0;while(true) {long long x = que.top();  //取队头que.pop();cnt++;if(cnt == n) {res = x;break;}for(int y : factors) {long long m = x * y;if(s.count(m) == 0) {s.insert(m);que.push(m);}}}return res;}
};

LeetCode---2021/8/30相关推荐

  1. 2021数学基础30讲扫描版 网盘(里面直接是文档,免费)

    2021数学基础30讲扫描版 网盘(里面直接是文档,无需付费) 考研数学基础(数一二三通用) https://pan.baidu.com/s/1tq_GzdapBpiPxjtu7entEw 提取码:s ...

  2. 2021/10/30的1+X大数据Java答案

    2021/10/30 步骤二 public Member() { }public Member(String name,String pwd,float score,int rank) {this.n ...

  3. 2021.1.30课程摘要(逻辑教育-王劲胜)

    2021.1.30课程摘要 逻辑教育-13期-Python基础班-王劲胜 一.集合 二.函数(上) 三.作业讲解 逻辑教育-13期-Python基础班-王劲胜 一.集合 1.集合简介 • 集合表现形式 ...

  4. 2021.03.30【2021省赛】模拟 比赛总结

    2021.03.30[2021省赛]模拟 比赛总结 地址: https://gmoj.net/senior/#contest/home/3350 T1: 神奇纸牌(uno) T2: 凌乱平衡树 (tr ...

  5. JZOJ 7036. 2021.03.30【2021省赛模拟】凌乱平衡树(平衡树单旋+权值线段树)

    JZOJ 7036. 2021.03.30[2021省赛模拟]凌乱平衡树 题目大意 给出两棵Treap,大小分别为 n , m n,m n,m,每个点的 p r i o r i t y priorit ...

  6. LeetCode HOT 100 --- 2021/7/30

    目录 在排序数组中查找元素的第一个和最后一个位置 组合总和 全排列 旋转图像 字母异位词分组 跳跃游戏 合并区间 在排序数组中查找元素的第一个和最后一个位置 分析:   二分查找:一旦查找到targe ...

  7. 【报告分享】2021年30+精致女性人群需求洞察:“她”经济时代科技引领精致生活.pdf(附下载链接)...

    大家好,我是文文(微信号:sscbg2020),今天给大家分享腾讯营销洞察于2021年1月份发布的报告<"她"经济时代科技引领精致生活(2021年版).pdf>. 近两 ...

  8. LeetCode 2021 力扣杯全国秋季编程大赛(第384名)

    文章目录 1. 无人机方阵 2. 心算挑战 3. 黑白翻转棋 4. 玩具套圈 5. 十字路口的交通 2021.9.11,周六 比赛之前:早上去交大看看,本科毕业10年了,由于限流,校园里没有多少回校的 ...

  9. 驭势科技两位青年翘楚 荣登福布斯2021年度30 Under 30榜单

    本文转载自公众号:福布斯 ID: forbes_china 2021年,新世纪的第22个年头,中国正经历百年难遇的巨大变局.商业社会生态变迁.国际关系站上拐点.新冠疫情的常态化均考验人们的信心.未来怎 ...

  10. 程序员副业赚钱之2021版30个软件创意 第一期

    创业需要一个IDEA!除非您有想法,否则您无法创业.当谈到初创公司的软件创意时,我们认识到运营公司最具挑战性的因素是提出良好的软件程序概念,这些概念具有创新性和前景,足以建立一家价值百万美元的公司.有 ...

最新文章

  1. kindeditor扩展粘贴截图功能修改图片上传路径并通过webapi上传图片到图片服务器...
  2. 解析列表中的数据python_将html数据解析成python列表进行操作
  3. java并发排序_Java基于fork/koin类实现并发排序
  4. python完全支持面向对象编程_[Python] 类与面向对象编程
  5. Linux下防止文件误删方法
  6. 【原创】“三次握手,四次挥手”你真的懂吗?
  7. linux联想电脑wifi密码,联想笔记本Y7000—ubuntu16.4无法开启wifi的解决办法
  8. 如何获取函数的变长参数(va_list, va_start, va_arg, va_end)
  9. 计算机启动过程过程图,计算机启动过程图文详解(一)----计算机初始化启动过程...
  10. 安卓手机管理_时间管理大师手机版下载-时间管理大师app下载v1.0.0 安卓最新版...
  11. 大型网站技术架构思维导图
  12. FBX格式和obj格式的区别
  13. latex中脚注内容不显示
  14. 得物购买截图生成_iPhone12订单生成器app-iPhone12订单生成器网页app免费版预约 v1.0...
  15. 2022-2027年中国发动机行业市场调研及未来发展趋势预测报告
  16. java graphics2d旋转_反转Java Graphics2D缩放和旋转坐标
  17. oppor11st升Android p,OPPO R11st刷机教程_OPPO R11st卡刷升级更新官方系统包
  18. apu运行linux,AMD发布带全新APU的新LINUX版本驱动
  19. Matlab 基础04 - 冒号Colon operator “:”的使用和复杂应用详析
  20. iOS 13 DarkMode 暗黑模式

热门文章

  1. 怎样把xp计算机语言改为英文,如何把windows电脑的默认语言改成英文?
  2. SAP FI 系列 (030) - 特别总账标记
  3. 阿里的CTR预测:Deep Interest Network
  4. java调用jasper_Java开源报表Jasper入门(2) -- 使用JasperSoft Studio创建一个简单报表
  5. win10双显示器 鼠标移动总感觉到另一屏困难
  6. jquery+easyui培训文档
  7. Java 泛型的本质——类型擦除
  8. 浅谈C++类与对象(一)
  9. 《华为项目管理法》读书笔记
  10. 云课堂让职业院校物联网技术应用教学更简单