当前位置: 首页 > news >正文

算法通关村第三关——数组白银

文章目录

    • 一、删除元素
      • 1.1 原地移除所有值等于val的元素
      • 1.2 删除有序数组中的重复项
    • 二、元素奇偶移动
    • 三、数组轮转


一、删除元素

1.1 原地移除所有值等于val的元素

LeetCode 27.移除元素
解法1:快慢指针

class Solution {public int removeElement(int[] nums, int val) {int fast=0;int slow=0;for(; fast<nums.length; fast++){if(nums[fast]!=val){nums[slow] = nums[fast];slow++;}}return slow;}
}

解法2:双指针+覆盖

class Solution {public int removeElement(int[] nums, int val) {int left=0;int right=nums.length-1;while(left<=right){if(nums[left]==val){nums[left] = nums[right--];}else{left++;}}return left;}
}

1.2 删除有序数组中的重复项

LeetCode 26.删除有序数组中的重复项

class Solution {public int removeDuplicates(int[] nums) {int slow = 1;for(int fast=0;fast<nums.length;fast++){if(nums[slow-1]!=nums[fast]){nums[slow]=nums[fast];slow++;}} return slow;}
}

二、元素奇偶移动

LeetCode 905.按奇偶排序数组
双指针遍历判断。

class Solution {public int[] sortArrayByParity(int[] nums) {int left = 0;int right = nums.length - 1;while(left<right){if(nums[left]%2>nums[right]%2){int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;}if(nums[left]%2==0) left++;if(nums[right]%2==1) right--;}return nums;}
}

三、数组轮转

LeetCode 189.轮转数组
比如 1,2,3,4,5,6,7。向右轮转3个位置,结果为5,6,7,1,2,3,4

可以把数组分为不轮转的数组和要轮转的数组两部分 1,2,3,4 和 5,6,7。各自反转为4,3,2,1和7,6,5。最后整体反转得到结果。

class Solution {public void rotate(int[] nums, int k) {int l = nums.length;k %= l;reverse(nums,0,l-k-1);reverse(nums,l-k,l-1);reverse(nums,0,l-1);}private void reverse(int[] nums,int left,int right){while(left<right){int tmp = nums[left];nums[left] = nums[right];nums[right] = tmp;left++;right--;}}
}
http://www.lryc.cn/news/123136.html

相关文章:

  • 黑客利用 Facebook 漏洞,发起网络钓鱼攻击
  • React Router@3.x 升级到 @6.x 的实战
  • LAXCUS和GPU软硬件结合,构建强大算力生态
  • 学会这一招,轻松玩转小程序自动化
  • Mongodb 更新集合的方法到底有几种 (上) ?
  • 推荐5款能帮你解决各种问题的神器
  • 绕过 open_basedir
  • 如何使用SpringBoot 自定义转换器
  • 多线程(进阶)
  • 端口输入的数据为什么要打拍?
  • Qt读写Excel--QXlsx编译为静态库2
  • win11电脑查找已连接打印机ip的方法
  • 测试开发探索:“WeTalk“网页聊天室的测试流程与自动化
  • 图片增强组件实现
  • go.sum are different when using go mod vendor/download
  • Docker技术入门教程
  • Vue2-组件,组件的使用及注意点,组件嵌套,VueComponent构造函数,单文件组件
  • IntelliJ IDEA Bookmark使用
  • kriging-contour前端克里金插值
  • 第八章 CUDA内存应用与性能优化篇(中篇)
  • 适用于物联网 (IoT)的远距离、低功耗、低速率WiFi—Wi-Fi HaLow
  • 【解读Spikingjelly】使用单层全连接SNN识别MNIST
  • 穿越数字奇境:探寻元宇宙中的科技奇迹
  • 2024」预备研究生mem-阴影图形
  • 【设计模式】责任链模式
  • 解密人工智能:线性回归 | 逻辑回归 | SVM
  • 【FFMPEG应用篇】使用FFmpeg的常见问题
  • (vue)获取对象的键遍历,同时循环el-tab页展示key及内容
  • 【严重】Smartbi未授权设置Token回调地址获取管理员权限
  • 北京鸟巢门票多少,里面有什么好玩的