当前位置: 首页 > news >正文

【LeetCode】剑指 Offer(29)

目录

题目:剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

题目:剑指 Offer 57. 和为s的两个数字 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

题目:剑指 Offer 57 - II. 和为s的连续正数序列 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(Leetcode)

 

题目的接口:

class Solution {
public:int singleNumber(vector<int>& nums) {}
};

解题思路:

这道题我水平有限,

我就直接用哈希表计数,

然后再遍历整个哈希表,找出只出现一次的数即可,

下面是代码:

代码:

class Solution {
public:int singleNumber(vector<int>& nums) {unordered_map<int, int> mp;for(auto& e : nums) mp[e]++; //用哈希表存for(auto k : mp) if(k.second == 1) return k.first; //返回只有一个的值return 1;}
};

过啦!!!

题目:剑指 Offer 57. 和为s的两个数字 - 力扣(Leetcode)

 

题目的接口:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {}
};

解题思路:

这道题我一开始用的是双指针遍历整个数组,

然后计算结果,

然后我就超时了,

这道题由于他是一个有序数组,

所以我们还有一种双指针的做法,

就是两段逼近的双指针思想,

所以我就再用了一次双指针,

结论:

如果是有序数组的话,两端逼近的双指针效率

比从起点开始的双指针更高。

下面是代码:

代码:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> v;//两段逼近的双指针int l = 0, r = nums.size() - 1;while(l < r) {if(nums[l] + nums[r] > target) r--;else if(nums[l] + nums[r] < target) l++;else { //如果找到了v.push_back(nums[l]);v.push_back(nums[r]);return v;}}return v;}
};

过啦!!!

题目:剑指 Offer 57 - II. 和为s的连续正数序列 - 力扣(Leetcode)

 

题目的接口:

class Solution {
public:vector<vector<int>> findContinuousSequence(int target) {}
};

解题思路:

这道题的思路比较明显,

我们可以用滑动窗口去做,

运用滑动窗口的思想实现,然后将每一个符合条件的值

放进二维数组里面,最后返回即可。

下面是代码:

代码:

class Solution {
public:vector<vector<int>> findContinuousSequence(int target) {vector<vector<int>> vv;//滑动窗口的左右边界int l = 1, r = 1;int sum = 0;//因为 5 + 6 一定大于 9,所以我们的边界可以取到(target / 2 + 1)while(l <= target / 2 + 1) {if(sum < target) { //如果值小了,更新右边界sum += r++;}else if(sum > target) { //如果值大了,更新左边界sum -= l++;}else { //如果值等于target,存进二维数组,然后更新一下边界,不然会死循环vector<int> v;for(int i = l; i < r; i++) v.push_back(i);vv.push_back(v);//更新左边界sum -= l++;}}return vv;}
};

过啦!!!

 

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看

http://www.lryc.cn/news/59155.html

相关文章:

  • 自然语言处理(八):Lexical Semantics
  • 推荐一款 AI 脑图软件,助你神速提高知识体系搭建
  • 掌握这些“学习方法和工具”,让你事半功倍!
  • MyBatis 源码解析 面试题总结
  • 「业务架构」需求工程—需求规范(第3部分)
  • chapter-1数据管理技术的发展
  • 23.Spring练习(spring、springMVC)
  • 【数据库原理 • 七】数据库并发控制
  • 内部人员或给企业造成毁灭性损失
  • 【技巧】Word“只读方式”的设置与取消
  • 【软考备战·希赛网每日一练】2023年4月12日
  • 算法记录 | Day28 回溯算法
  • 气象历史数据和空气质量历史数据资源汇总免费
  • 【区块链】走进web3的世界-对于前端来说,web2与web3的区别
  • 深拷贝和浅拷贝
  • 【回眸】ChatGPT Plus(GPT4体验卡)
  • 走进小程序【七】微信小程序【常见问题总结】
  • 光电隔离转换器 直流信号放大器 导轨安装DIN11 IPO OC系列
  • 语聊房app的开发以及运营思路
  • 目标检测基础之IOU计算
  • 从spring boot泄露到接管云服务器平台
  • 大数据技术——spark集群搭建
  • 嵌入式学习笔记汇总
  • Python 全栈系列220 Tornado的服务搭建
  • ESXi安装CentOS
  • WebTest搭建
  • 什么性格的人适合报考机械类专业?(高考志愿填报选专业)
  • 进程概念详解
  • C语言基础——指针
  • 反序列化渗透与攻防(二)之Java反序列化漏洞