IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣打卡第一天 -> 正文阅读

[数据结构与算法]力扣打卡第一天

数组形式的整数加法

解题思路

因为如果在原数组上进行更改,如果超过了原数组的位数,那么就会很麻烦。
所以我们尽可能要先建立一个vector<int> res作为结果返回数组。
这样push_back()计算后的结果,最终只需要reverse倒一下就行。
其次计算过程中,要注意carry进位的问题,每次计算都要将k的当前位和num的当前位以及carry相加。
k的当前位只需要每次%10然后k /= 10随之更改k的值即可。

最后要考虑数组位数大于k,和k的位数大于数组,以及两个数加和后位数变大的可能 。
位数变大就要有carry,
在第一个 循环中,哪怕 数组的位数大,循环后res会和num的位数一样大,如果有进位,会在下一个循环中进行判断并push_back()进位值(前提是k的位数小于num.size());
如果k的位数过大,会在第二个循环中带着第一个循环剩下的carry进行计算。(需要注意,如果num位数小于k且最后一次计算是可能仍产生carry的);

代码

  
class Solution { public: vector<int> addToArrayForm(vector<int>& num, int k) { int n = num.size(); int carry = 0; vector<int> res; //注意:num有多少位,就要进行多少次运算。注意 i的取值范围。 //没必要管k到底有多少位,如果 位数少,后期直接加0即可。但是得把num数组中前面的数都push_back到res中。 for(int i = n - 1 ;i >= 0 ; i--){ int sum = num[i] + k % 10 + carry; k = k /10; carry = sum / 10; res.push_back(sum%10); }//有可能k的位数 太少, for(;k!=0||carry!=0;k/=10){ int sum = k%10 + carry; carry = sum / 10; res.push_back(sum % 10); } reverse(res.begin(),res.end()); return res; } };
[力扣989数组形式的整数加法](https://leetcode.cn/problems/add-to-array-form-of-integer/)

674最长连续递增序列

解题思路

已知数组nums中一定有超过1个的元素。则最少序列长度为1.
只有后面大于前面的数才会使递增延续,length++。反之小于或者等于,都会让
递增序列断掉。断掉后进行和maxlength的比较,再将length赋值为最初的1.重新开始。
最后为了避免出现:全增,即最大序列长度等于nums.size(),会让maxlength失去和length的赋值比较
的机会,所以,在外面再进行一下比较。大的会return回去。
//如果下面nums[i]>nums[i+1]的话当遇到相等的两个数时会自动跳过,如果再次遇见的第一个非相等数是大于自己的,就会继续算到递增子序列中就会出现错误。只有改成>=才可以

代码

  
class Solution { public: int findLengthOfLCIS(vector<int>& nums) { int maxlength = 1; int length = 1; for(int i = 0;i<nums.size()-1;i++){ if(nums[i]<nums[i+1]) length++; else if(nums[i] >= nums[i+1]){ if(maxlength<length) maxlength = length; length = 1; } } maxlength = maxlength>length?maxlength:length; return maxlength; } };
[力扣674](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/)

599两个列表的最小索引总和

解题思路

通过哈希表来存储第一个数组中的字符串的序号,然后再遍历第二个数组,来找是否具有相同字符串,
以及存储两个序号和。
值得注意的是,如果发现序号和更小的菜名,需要将之前存储在ret中的字符串都清理掉。
如果发现和序号和相同的菜名,需要将该字符串存储到ret中。

代码

  
class Solution { public: vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) { unordered_map<string,int> index; for(int i = 0;i<list1.size();i++){ index[list1[i]] = i; } vector<string>ret; int indexsum = list1.size()+list2.size()-2; for(int i = 0;i<list2.size();i++){ if(index.count(list2[i])>0){ int j = index[list2[i]];//得到list1中餐厅序号 if(i + j < indexsum){//如果序号更小,就要把之前存储的餐厅清理掉 ret.clear(); ret.push_back(list2[i]); indexsum = i + j; }else if(i + j == indexsum){//如果相等 ,则都要放到输出vector中 ret.push_back(list2[i]); } } } return ret; } };

2319判断矩阵是否是一个X矩阵

解题思路

首先要知道,对角线坐标的变化情况,
左对角线:(0,0)->(n-1,n-1);
有对角线:(0,n-1)->(n-1,0);
在一次循环中
表示为 :(i,i),以及(i,n-1-i);
其余情况在依次判断即可。

代码

  
class Solution { public: bool checkXMatrix(vector<vector<int>>& grid) { int n = grid.size(); for(int i = 0;i<n;i++){ if(grid[i][i]==0) return false; if(grid[i][n-1-i] == 0) return false; for(int j = 0;j<n;j++){ if(j == i) continue; if(j == n - 1 - i)continue; if(grid[i][j] != 0)return false; } } return true; } };
[2319判断矩阵是否是一个X矩阵](https://leetcode.cn/problems/check-if-matrix-is-x-matrix/)
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 23:13:18  更:2022-07-04 23:16:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:19:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码