LeetCode 数组算法
OldWang313
这个作者很懒,什么都没留下…
展开
-
LeetCode C++ 算法 旋转图像
给定一个 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,8,10],[13,3,6,7],[15,14,12,16]]输出:[[15...原创 2021-09-13 10:55:03 · 153 阅读 · 0 评论 -
LeetCode C++ 算法 有效的数独
请你判断一个9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.'表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。示例 1:输入:board = [["5","3",".",".","7"...原创 2021-09-13 10:46:34 · 136 阅读 · 0 评论 -
LeetCode C++ 算法 两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], t...原创 2021-09-13 10:27:12 · 192 阅读 · 0 评论 -
LeetCode C++ 算法 移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。思路:遍历数组,遇到0时计数器+1并删除当前元素,循环计数器次数,将0插入队尾;class Solution {public: void moveZeroes(vector<int>& nums) { ...原创 2021-09-13 09:52:24 · 170 阅读 · 0 评论 -
LeetCode C++ 算法 加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例3:输入:digits = [0]输出:[1]...原创 2021-09-13 09:50:13 · 124 阅读 · 0 评论 -
LeetCode C++ 算法 两个数组的交集II
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4思路:位运算class Solution {public: int singleNumber(vector<int>& nums) { int result ..原创 2021-09-13 09:42:49 · 171 阅读 · 0 评论 -
LeetCode C++ 算法 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:异或运算,相同为0.例:1^1=0;1^0=1;0^1=1;0^0=1;且异或运算满足交换律(a^b^c=b^c^a)class Solution {public: int原创 2021-09-08 07:54:46 · 111 阅读 · 0 评论 -
LeetCode C++ 算法 存在重复元素
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路:先排序,再依次对比相邻元素,相等就返回trueclass Solution {public: bool c...原创 2021-09-08 07:48:52 · 81 阅读 · 0 评论 -
LeetCode C++ 算法 旋转数组
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例...原创 2021-09-08 07:44:12 · 97 阅读 · 0 评论 -
LeetCode C++ 算法 删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDupli原创 2021-09-07 21:06:56 · 183 阅读 · 0 评论 -
LeetCode C++ 算法 买卖股票的最佳时机 II
给定一个数组 prices ,其中prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天..原创 2021-09-07 22:57:32 · 126 阅读 · 0 评论