摘要:
题目: 解答: 从最末位寻找第一个破坏升序的数nums[pos - 1], 然后在遍历过的数里寻找比该数大的最小的一个数。如遍历过的数为[7,6,4,3], nums[pos - 1]为5, 则5需要与6进行交换, 在将[7,5,4,3]改为升序(这里使用reverse)。 遍历过的数从后往前一定是 阅读全文
posted @ 2020-05-04 19:31
梦醒潇湘
阅读(193)
评论(0)
推荐(0)
摘要:
题目: 解答: 1 class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) 4 { 5 sort(nums.begin(), nums.end()); 6 7 int N = nums.size(); 阅读全文
posted @ 2020-05-04 19:25
梦醒潇湘
阅读(193)
评论(0)
推荐(0)
摘要:
题目: 解答: 将A的从低位(尾部数字)与K相加,同时K每次都要丢弃个位数字,然后与A的下一个数字相加(此思路参考评论区大佬做的)。 1 class Solution { 2 public: 3 vector<int> addToArrayForm(vector<int>& A, int K) 4 阅读全文
posted @ 2020-05-04 18:52
梦醒潇湘
阅读(239)
评论(0)
推荐(0)
摘要:
题目: 解答: lef和rig分别指向左右的数,比较并从最大位开始装。 1 class Solution { 2 public: 3 vector<int> sortedSquares(vector<int>& A) 4 { 5 int len = A.size(); 6 vector<int> a 阅读全文
posted @ 2020-05-04 18:49
梦醒潇湘
阅读(143)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:线性扫描。 我们从数组的最左侧开始扫描,直到找到第一个不满足 A[i] < A[i + 1] 的 i,那么 i 就是这个数组的最高点。如果 i = 0 或者不存在这样的 i(即整个数组都是单调递增的),那么就返回 false。否则从 i 开始继续扫描,判断接下来的的位置 j 阅读全文
posted @ 2020-05-04 18:46
梦醒潇湘
阅读(234)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:双指针。 在找到一个偶数位是奇数的前提下,找奇数位上的偶数,找到之后在交换。 1 class Solution { 2 public: 3 vector<int> sortArrayByParityII(vector<int>& A) 4 { 5 int j = 1; 6 f 阅读全文
posted @ 2020-05-04 18:44
梦醒潇湘
阅读(183)
评论(0)
推荐(0)
摘要:
题目: 解答: 设置双指针 如果右指针 r 是奇数,指针往右走 否则与左指针 l 交换一次 移动左指针 l 1 class Solution { 2 public: 3 vector<int> sortArrayByParity(vector<int>& A) 4 { 5 int l = 0; 6 阅读全文
posted @ 2020-05-04 18:41
梦醒潇湘
阅读(353)
评论(0)
推荐(0)
摘要:
题目: 解答: 如果数组单调则所有相邻两值的差必须都同号。 1 class Solution { 2 public: 3 bool isMonotonic(vector<int>& A) 4 { 5 //两相邻值的差 6 int sub=0; 7 for (int i = 1; i < A.size 阅读全文
posted @ 2020-05-04 18:39
梦醒潇湘
阅读(217)
评论(0)
推荐(0)
摘要:
题目: 解答: 思路:滑动窗口。 每个(连续)增加的子序列是不相交的,并且每当 nums[i-1]>=nums[i] 时,每个此类子序列的边界都会出现。当它这样做时,它标志着在 nums[i] 处开始一个新的递增子序列,我们将这样的 i 存储在变量 anchor 中。例如,如果 nums=[7,8, 阅读全文
posted @ 2020-05-04 18:27
梦醒潇湘
阅读(207)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:累计求和 为了获得长度为 k的子数组的平均值,我们需要知道这 k个元素之和。使用 sum记录数组的累加和,sum[i]存储从第一个元素到第 i个元素之和。该数组只需要计算一次。 在数组 sum中,原数组索引从 i到 i+k的元素之和为 sum[i] - sum[i-k]。按照 阅读全文
posted @ 2020-05-04 18:21
梦醒潇湘
阅读(392)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:排序。 我们将数组进行升序排序,如果数组中所有的元素都是非负数,那么答案即为最后三个元素的乘积。 如果数组中出现了负数,那么我们还需要考虑乘积中包含负数的情况,显然选择最小的两个负数和最大的一个正数是最优的,即为前两个元素与最后一个元素的乘积。 上述两个结果中的较大值就是答案 阅读全文
posted @ 2020-05-04 18:16
梦醒潇湘
阅读(255)
评论(0)
推荐(0)
摘要:
题目: 解答: 我们从左到右扫描数组 flowerbed,如果数组中有一个 0,并且这个 0 的左右两侧都是 0,那么我们就可以在这个位置种花,即将这个位置的 0 修改成 1,并将计数器 count 增加 1。对于数组的第一个和最后一个位置,我们只需要考虑一侧是否为 0。 在扫描结束之后,我们将 c 阅读全文
posted @ 2020-05-04 17:57
梦醒潇湘
阅读(166)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:暴力破解,找出所有的两个元素的排列。 方法二:排序。 为了理解这种方法,让我们从不同的角度来看待问题。我们需要形成数组元素的配对,使得这种配对中最小的总和最大。因此,我们可以查看选择配对中最小值的操作,比如 (a,b)可能会产生的最大损失 a-b (如果 a > b)。 阅读全文
posted @ 2020-05-04 17:44
梦醒潇湘
阅读(184)
评论(0)
推荐(0)
摘要:
题目: 解答: 依次扫描字符串,并用两个计数器记录A和L的数量,其中对于L计数器,因为需要是连续计数,所以如果碰到A和P,则需要重置L计数器。 当A计数器 > 1 时,直接返回false。当L计数器 > 2 时,直接返回false。 都扫描结束,则返回true。 1 class Solution { 阅读全文
posted @ 2020-05-04 17:41
梦醒潇湘
阅读(186)
评论(0)
推荐(0)
摘要:
题目: 解答: 首先将数组排序,随后从小到大遍历数组中的元素,对于每一个元素,向其右侧二分查找k+nums[i],因为向其左侧查找得到的nums[i]-k一定是在更早之前被发现的(nums[i]-k)+k。 如果当前元素和其前一个元素相等,那么其找到的结果也必然和前一个元素相等,是重复结果,因此直接 阅读全文
posted @ 2020-05-04 17:37
梦醒潇湘
阅读(174)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:递归 算法: (1)检查整数N,如果N小于等于1,则返回N; (2)否则,通过递归关系:F(n) = F(n-1) + F(n-2); (3)直到所有计算返回结果得到答案; 1 public class Solution { 2 public int fib(int N) { 阅读全文
posted @ 2020-05-04 17:32
梦醒潇湘
阅读(217)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:快慢指针 1 class Solution { 2 public: 3 int findMaxConsecutiveOnes(vector<int>& nums) 4 { 5 int slow = 0; 6 int fast = 0; 7 int count = 0; 8 i 阅读全文
posted @ 2020-05-04 17:24
梦醒潇湘
阅读(205)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一:哈希表。 方法二:原地修改。 (1)我们需要知道数组中存在的数字,由于数组的元素取值范围是 [1, N],所以我们可以不使用额外的空间去解决它。 (2)我们可以在输入数组本身以某种方式标记已访问过的数字,然后再找到缺失的数字。 算法: (1)遍历输入数组的每个元素一次。 (2 阅读全文
posted @ 2020-05-04 17:22
梦醒潇湘
阅读(283)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一: 利用set中元素的有序性和唯一性,将元素放入set中,若set的size不小于3输出倒数第三个元素;若set的size小于3,输出最后一个元素。 1 class Solution { 2 public: 3 int thirdMax(vector<int>& nums) 4 阅读全文
posted @ 2020-05-04 17:17
梦醒潇湘
阅读(178)
评论(0)
推荐(0)
摘要:
题目: 解答: 方法一: 当我们遇到一个非零元素时,我们需要交换当前指针和慢速指针指向的元素,然后前进两个指针。如果它是零元素,我们只前进当前指针。 1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) 4 { 5 int 阅读全文
posted @ 2020-05-04 17:11
梦醒潇湘
阅读(251)
评论(0)
推荐(0)

浙公网安备 33010602011771号