线性表
文章平均质量分 62
小米内推官_AngelDg
我们总以为,是生活欠我们一个“满意”,其实是我们欠生活一个“努力”。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[每日一题]125:最少交换次数(小米OJ - 8)
文章目录题目描述题解思路题目描述给出一个无序数列,每次只能交换相邻两个元素,求将原数列变成递增数列的最少交换次数。 如:数列:2,3,1,交换3和1后变成:2,1,3;交换1和2之后变成:1,2,3。总共交换2次。输入:逗号隔开的正整数数列输出:正整数输入样例2,3,1输出样例2题解思路可以转换成求逆序数对代码实现:#include <bits/stdc++.h>using namespace std;int main(){ strin原创 2021-03-27 02:27:49 · 731 阅读 · 0 评论 -
[每日一题]124:第一个缺失正数
文章目录题目描述题解思路题目描述给出一个无序的数列,找出其中缺失的第一个正数,要求复杂度为 O(n) 如:[1,2,0],第一个缺失为3。 如:[3,4,-1,1],第一个缺失为2。输入:1,2,0输出:3输入样例:1,2,03,4,-1,1-1,-3,-51,2,3-1,-10,0输出样例:32141题解思路主要就是针对输入字符串格式的转换,剩下的就比较简单对数组排序,从前往后遍历,看是否有对应正数代码实现:#include <bits/s原创 2021-03-26 16:42:18 · 203 阅读 · 0 评论 -
[每日一题]123:交叉队列(小米OJ - 6,递归)
文章目录题目描述题解思路题目描述给出三个队列 s1,s2,s3 ,判断 s3 是否是由 s1 和 s2 交叉得来。 如:s1 为 aabcc , s2 为 dbbca。 当 s3 为 aadbbcbcac 时,返回 true(即将 s1 拆成三部分: aa,bc,c 分别插入 s2 对应位置) 否则返回 false。输入:aabcc,dbbca,aadbbcbcac输出:true题解思路先分割输入字符串再递归判断,尤其是对两个字符串的字母都与当前字符串的字母相同时代码实现:b原创 2021-03-26 16:10:54 · 225 阅读 · 0 评论 -
[每日一题]122:分发糖果
文章目录题目描述题解思路方法一:二次遍历方法二:常数空间遍历题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入:[1, 0, 2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入:[1, 2, 2]输出:4解原创 2021-03-23 14:42:00 · 596 阅读 · 0 评论 -
[每日一题]121:加油站
文章目录题目描述题解思路方法一:一次遍历题目描述在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入: gas = [1,2,原创 2021-03-22 13:24:33 · 228 阅读 · 0 评论 -
[每日一题]120:矩阵置零
文章目录题目描述题目解答方法一:常数空间题目描述给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,5,0],原创 2021-03-17 21:31:51 · 348 阅读 · 0 评论 -
[每日一题119]:格雷编码
文章目录题目描述题解思路题目描述格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 - 010 - 211 - 3原创 2021-03-15 11:21:42 · 320 阅读 · 0 评论 -
[每日一题]117:爬楼梯
文章目录题目描述题解思路方法一:递归方法二:迭代题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶题解思路设原创 2021-03-10 20:50:43 · 302 阅读 · 0 评论 -
[每日一题]116:加一
文章目录题目描述题解思路代码一:代码二:题目描述给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits =原创 2021-03-10 20:11:54 · 250 阅读 · 0 评论 -
[每日一题]115:旋转图像 —— 旋转矩阵
文章目录题目描述题解思路方法一:使用辅助数组方法二:原地旋转方法三:翻转代替旋转题目描述给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,原创 2021-03-09 20:40:06 · 1062 阅读 · 0 评论 -
[每日一题]114:接雨水
文章目录题目描述题解思路方法一:暴力方法二:动态编程(方法一的优化)方法三:栈题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。示例 1:输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 示例 2:输入:height = [4,2,0,3,2,5]输出原创 2021-03-08 20:13:49 · 217 阅读 · 0 评论 -
[每日一题]113:有效的数独
vector<int> wow(9,0); int mux1; int mux2; int mux3; int box_index; for(int i=0;i<9;i++){ for(int j=0;j<9;j++){ if(board[i][j] == '.'){ continue;原创 2021-03-07 19:59:04 · 989 阅读 · 0 评论 -
[每日一题]112:排列序列
文章目录题目描述题解思路方法一:调用 STL 库题目描述给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。示例 1:输入:n = 3, k = 3输出:"213"示例 2:输入:n = 4, k = 9输出:"2314"示例 3:输入:n = 3, k = 1输出:"123"原创 2021-03-05 15:20:18 · 487 阅读 · 1 评论 -
[每日一题]111:下一个排列
文章目录题目描述题解思路方法一:两遍扫描方法二:使用 STL 库(没有意义)题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1,1,5]输出:[1,5,1]原创 2021-03-04 16:58:05 · 289 阅读 · 2 评论 -
[每日一题]110:移除元素
文章目录题目描述题解思路:题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度原创 2021-03-04 15:37:34 · 251 阅读 · 2 评论 -
[每日一题]109:四数之和
文章目录题目一方法一:排序 + 双指针题目二题目一描述如下:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:原创 2021-03-03 23:38:35 · 260 阅读 · 2 评论 -
[每日一题]97:三数之和
题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]双指针法:首先将数组排序,然后 有一层for循环,i从下表0的地方开始,同时定一个下表left 定义在i+1的位置上,原创 2020-08-26 10:50:16 · 330 阅读 · 0 评论 -
[每日一题]96:两数之和
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]方法一:暴力(会超时)暴力算法时间复杂度O(n²),空间复杂度O(1)class Solution {public:原创 2020-08-26 10:12:35 · 296 阅读 · 0 评论 -
[每日一题]108:最长连续序列(小米OJ - 4)
文章目录题目描述题解思路方法一:(非进阶)方法二:(进阶)题目描述给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9题解思路方法一:(非进阶)复杂度分原创 2021-03-02 08:18:22 · 351 阅读 · 0 评论 -
[每日一题]107:寻找两个正序数组的中位数
文章目录题目描述题解思路方法一:非进阶方法二:二分法 --- 理解题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.原创 2021-02-26 18:14:04 · 256 阅读 · 0 评论 -
[每日一题]106:搜索旋转排序数组
文章目录题目一描述题目一描述整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你 旋转后原创 2021-02-25 19:52:33 · 253 阅读 · 0 评论 -
[每日一题]105:删除排序数组中的重复项
文章目录题目描述题解思路方法一:替换实现方法二:应用STL题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1原创 2021-02-23 23:24:00 · 250 阅读 · 0 评论
分享