数组
数组练习
另一花生
竹杖芒鞋轻胜马,一蓑烟雨任平生
展开
-
53. 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。输入:nums = [1]输出:1输入:nums = [5,4,-1,7,8]输出:23class Solution { public int maxSubArray(int[] ..原创 2022-01-29 02:18:14 · 305 阅读 · 0 评论 -
1. 两数之和
import java.util.*;public class Solution { /** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ public int[] twoSum (int[] numbers, int target) { // write code here int n = nu.原创 2021-03-27 13:43:50 · 211 阅读 · 0 评论 -
CC14 出现一次的数字ii
描述现在有一个整数类型的数组,数组中只有一个元素只出现一次,其余元素都出现三次。你需要找出只出现一次的元素数据范围: 数组长度满足0 < n \le 40000<n≤4000,数组中每个元素的值满足0 \le val \le 21474836480≤val≤2147483648进阶:空间复杂度O(1)O(1), 时间复杂度O(n)O(n)输入:[0,0,0,5]返回值:5输入:[0]返回值:0import java.util.*;imp...原创 2021-11-03 00:28:25 · 210 阅读 · 0 评论 -
59. 螺旋矩阵 II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]输入:n = 1输出:[[1]]class Solution { public int[][] generateMatrix(int n) { int[][] res = new int[n][n]; // 循环次数 .原创 2022-01-18 12:28:12 · 391 阅读 · 0 评论 -
209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组[4,3]是该条件下的长度最小的子数组。输入:target = 4, nums = [1,4,4]输出:1输入:targ.原创 2022-01-18 11:24:44 · 398 阅读 · 0 评论 -
18. 四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< n a、b、c 和 d 互不相同 nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。输入:nums = [1,0,-1,.原创 2022-01-17 23:57:41 · 269 阅读 · 0 评论 -
15. 三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = []输出:[]输入:nums = [0]输出:[]class Solution { public List<List<I原创 2022-01-17 22:01:15 · 541 阅读 · 0 评论 -
344. 反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。输入:s = ["h","e","l","l","o"]输出:["o","l","l","e","h"]输入:s = ["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]class Solution { public void rev原创 2022-01-17 07:46:26 · 272 阅读 · 0 评论 -
27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何原创 2021-10-07 12:04:40 · 528 阅读 · 0 评论 -
leetCode81:81. 搜索旋转排序数组 II
已知存在一个按非降序排列的整数数组 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,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4]原创 2021-06-06 09:36:49 · 503 阅读 · 0 评论 -
NC156 数组中只出现一次的数(其它数出现k次)
描述给定一个整型数组arrarr和一个整数k(k>1)k(k>1)。已知arrarr中只有 1 个数出现一次,其他的数都出现kk次。请返回只出现了 1 次的数。示例1[5,4,1,1,5,1,5],3返回: 4import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @pa...原创 2021-07-17 23:01:56 · 214 阅读 · 0 评论 -
283. 移动零
给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。class Solution { public void moveZeroes(int[] nums) { if (nums == null || nums.length <= 1) { return; }...原创 2021-12-29 01:11:17 · 136 阅读 · 0 评论 -
leetcode35搜索插入位置
题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0...原创 2021-06-05 23:46:40 · 150 阅读 · 0 评论 -
数组中出现次数超过一半的数字
描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。你可以假设数组是非空的,并且给定的数组总是存在多数元素。1<=数组长度<=50000示例1输入:[1,2,3,2,2,2,5,4,2]复制返回值:2复制示例2输入:[3,3,3,3,2,2,2]返回值:3示例3输入:[1]返回值:原创 2021-05-30 16:02:17 · 476 阅读 · 0 评论 -
leetCode:33. 搜索旋转排序数组
整数数组 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] 。给你 旋转后 的数组 nums 和一.原创 2021-06-06 09:07:26 · 219 阅读 · 0 评论 -
合并2个有序数组
public class Solution { public void merge(int A[], int m, int B[], int n) { int i = m - 1; int j = n - 1; int index = m + n - 1; while(i >=0 && j >= 0){ A[index--] = A[i] > B[j] ? A[i--]:B[j.原创 2021-03-28 15:57:39 · 240 阅读 · 0 评论 -
189. 轮转数组
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。输入: 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]输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释:向右轮转 1 步: [99,-1,-100,3].原创 2021-12-29 00:43:40 · 196 阅读 · 0 评论 -
数组中出现次数超过一半的数字
public class Solution { public int MoreThanHalfNum_Solution(int [] array) { if(array == null || array.length == 0)return 0; int preValue = array[0]; int count = 1; for(int i=1; i < array.length; i++){ .原创 2021-03-28 11:43:22 · 402 阅读 · 0 评论 -
leetCode34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:nums ...原创 2021-06-06 00:13:57 · 441 阅读 · 0 评论