977.有序数组的平方 题目链接:977.有序数组的平方 题目描述:给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序. 例子如下: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100] 思路 首当其冲我们想到暴力算法解题,每个数平方之后,排个序,美滋滋. 应该为一个for循环进行全部平方,直接调用so…
双指针之滑动窗口 (长度最小的子数组:和为s的连续正数序列) 1, 什么时候使用? (与子数组/字符串 有关的题目)~如果给了某个具体值的target,即用滑动窗口 不然就双指针(一般做法,左边< 右边,依据条件左边和右边都不断靠近) 滑动窗口:是双指针的题目找出一个数组中满足一定条件的子数组问题,字符串也可以看成数组.看到子数组问题,就是DP回溯滑动窗口这三种之一  2,滑动窗口的通用框架 1:(例题:209_长度最小的子数组) (做题特点一:题目给定了具体的值target,这个target条…
来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/minimum-size-subarray-sum 著作权归领扣网络所有.商业转载请联系官方授权,非商业转载请注明出处. 假设这个最短长度为x,如果在长度为x的连续子数组中没有找到这样的子数组,那么长度小于x的子数组中一定也找不到这样的子数组(数组元素有序的前提下) 题目没有说数组元素有序,所以我们要考虑在数组元素无序的前提下,上面的结论是否成立, 结论还是成立的(调试出来的),个人觉得有序的前提下,…
一.有序数组的平方 977.有序数组的平方 leetcode链接 1.方法概述 双"指针"解法:因为数组本来是有序的,平方后可能出现的两端大数值大的情况.所以从数组两端开始遍历,谁大就将值赋给新建数组reslut的末端位置index.然后当两端相遇,停止遍历. 2.具体实现 Java实现版本 点击查看代码 class Solution { public int[] sortedSquares(int[] nums) { int left = 0; int right = nums.le…
Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead. Example: Input: s = 7, nums = [2,3,1,2,4,3] Output: 2 Explanation: the subarr…
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时候,书店老板会生气. 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0. 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的. 书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次. 请你返回这一…
Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn't one, return 0 instead. Example: Input: s = 7, nums = [2,3,1,2,4,3] Output: 2 Explanation: the subarr…
795. 区间子数组个数 给定一个元素都是正整数的数组A ,正整数 L 以及 R (L <= R). 求连续.非空且其中最大元素满足大于等于L 小于等于R的子数组个数. 例如 : 输入: A = [2, 1, 4, 3] L = 2 R = 3 输出: 3 解释: 满足条件的子数组: [2], [2, 1], [3]. 注意: L, R 和 A[i] 都是整数,范围在 [0, 10^9]. 数组 A 的长度范围在[1, 50000]. PS: 大佬简单易懂的代码, 下面有我写的那个,不过效率又低…
给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 解释: 只需要3次移动(注意每次移动会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4] 思路 尝试过暴力法 ,结果超时了 找规律 移动次数等于每个数减去最小数之和. Java版 class Solution { public int minMoves(int[] nums)…
给定一系列价格 [p1,p2...,pn] 和一个目标 target,将每个价格 pi 舍入为 Roundi(pi) 以使得舍入数组 [Round1(p1),Round2(p2)...,Roundn(pn)] 之和达到给定的目标值 target.每次舍入操作 Roundi(pi) 可以是向下舍 Floor(pi) 也可以是向上入 Ceil(pi). 如果舍入数组之和无论如何都无法达到目标值 target,就返回 -1.否则,以保留到小数点后三位的字符串格式返回最小的舍入误差,其定义为 Σ |Ro…