//初始化数组 int[] a = {1,2,3}; int[] b = new int[]{1,2,3}; Arrays.toString(b);//输出数组 int[] c = new int[3];//指定数组长度 //新建 ArrayList 对象 ArrayList<Integer> arr = new ArrayList<>(); arr.add(1);//添加元素 O(1) arr.add(3,99);//向下标为3的位置添加99这个元素 时间复杂度:O(n) arr.get(1);//获取数组下标为1的元素 时间复杂度:O(1) arr.set(1,11);//将数组下标为1 的元素改为99 时间复杂度:O(1) arr.remove(3);//删除数组元素为3的元素 时间复杂度:O(n) int cSize = c.length;//数组长度 int arrSize = arr.size();// O(n)
给定一个二进制数组
nums
, 计算其中最大连续1
的个数。示例 1:
输入:nums = [1,1,0,1,1,1] 输出:3 解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3. 示例 2: 输入:nums = [1,0,1,1,0,1] 输出:2
class Solution { public int findMaxConsecutiveOnes(int[] nums) { int count =0;//用来计算数量 int result = 0; if(nums==null || nums.length ==0){//边界值判定 return 0; } for(int i = 0;i<nums.length ;i++){ //遍历数组 if(nums[i]==1){//如果等于 1 count +1 count+=1; }else{ result = Math.max(result,count);//当不等于 1 时,判断当前 1 的数量是否比上一次大 count = 0;//下一次循环重新计数 } } return Math.max(result,count); } }
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2:
输入: nums = [0] 输出: [0]
题解:
class Solution { public void moveZeroes(int[] nums) { int index = 0; for(int i=0;i<nums.length;i++){//遍历数组 if(nums[i]!=0){ //如果不等于 0 nums[index]=nums[i]; //将此时的元素移动到 [index]的位置 index++; } } for(int j =index;j<nums.length;j++){ //最后补0 nums[j]=0; } } }
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 1:
输入:nums = [3,2,2,3], val = 3 输出:2, nums = [2,2] 解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。示例 2:
输入:nums = [0,1,2,2,3,0,4,2], val = 2 输出:5, nums = [0,1,4,0,3] 解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
class Solution { public int removeElement(int[] nums, int val) { int left = 0; //左指针 int right = nums.length;//右指针 while (left < right) { //两个指针没重合时 if (nums[left] == val) { //当左指针元素等于 val时 nums[left] = nums[right - 1]; //把右指针元素的值覆盖左指针 right--;//右指针向左移动 } else { left++; //不等于val 时左指针向右移动 } } return left; } }