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

Leetcode经典题目之“双指针交换元素“类题目

1 LC 27. 移除元素

class Solution {public int removeElement(int[] nums, int val) {int n=nums.length;int s=0;for(int i=0;i<n;i++){// 只有不等于目标值的时候才会进行交换,然后移动s指针if(nums[i]!=val){swap(nums,i,s++);}}return s;}void swap(int[]nums, int i, int j){int t=nums[i];nums[i]=nums[j];nums[j]=t;}
}

2 LC 删除有序数组中的重复项

class Solution {public int removeDuplicates(int[] nums) {int n=nums.length;int s=0;for(int i=1;i<n;i++){// 这个if条件也可以换成if(nums[i-1]!=nums[i]), 但是写成下面这样更方便理解,// 因为if(nums[s]!=nums[i]){nums[++s]=nums[i];}}return ++s;}
}

3 LC80. 删除有序数组中的重复项 II

参考解析:双指针解法
在这里插入图片描述

    public int removeDuplicates(int[] nums) {int n=nums.length;if(n<2){return n;}int s=2,f=2;while(f<n){if(nums[s-2]!=nums[f]){nums[s++]=nums[f];}f++;}return s;}

4 LC912. 快速排序数组:涉及到划分区间的问题,比如将小于等于目标值的元素都移动到左边,大于目标值的元素都移动到右边。参考下面的partition方法

  public int[] sortArray(int[] nums) {quickSort3(nums,0,nums.length-1);return nums;}void quickSort3(int[]arr,int i, int j) {if(i>=j)return;int pivot=partition(arr,i,j);quickSort3(arr,i,pivot-1);quickSort3(arr,pivot+1,j);}int partition(int[]arr,int l, int r){Random rand=new Random();int pivot = rand.nextInt(r-l+1)+l;swap(arr,pivot,r);int i=l-1;for(int j=l;j<r;j++){// 符合条件的才进行移动,对指针if(arr[j]<=arr[r]){swap(arr,++i,j);}}swap(arr,r,++i);return i;}void quickSort(int[]arr,int i, int j) {if(i>=j){return;}int base=arr[i];int p=i,q=j;for(int k=i+1;k<=q;){if(arr[k]<base){swap(arr,k,p);p++;k++;}else if(arr[k]>base){swap(arr,k,q);q--;}else{k++;}}for(int k=i;k<=j;k++){System.out.print("k:"+k+","+arr[k]+" ");}quickSort(arr,i,p-1);quickSort(arr,q+1,j);}
http://www.lryc.cn/news/237642.html

相关文章:

  • 计算机基础知识54
  • 深度系统(Deepin)开机无法登录,提示等待一千五百分钟
  • 工具及方法 - 多邻国: Duolingo
  • Redis篇---第十一篇
  • linux CentOS7 安装git 配置秘钥公钥克隆代码
  • 深度学习之生成唐诗案例(Pytorch版)
  • 算法设计与分析算法实现——删数问题
  • 基于Vue+SpringBoot的超市账单管理系统 开源项目
  • 【Linux 内核分析课程作业 1】mmap 实现一个 key-valueMap
  • docker compose使用教程(docker-compose教程)
  • 印刷企业实施MES管理系统需要哪些硬件设施
  • Java JSON字符串替换其中对应的值
  • Android VSYNC发展历程
  • 外呼系统作用和优势有哪些okcc,ai源码
  • 智元机器人岗位内推
  • el-popover和el-tooltip样式修改(普通的组件样式修改方法,对popover是不生效的)
  • 【AI实用技巧】GPT写sql统计语句
  • LeetCode(31)无重复字符的最长子串【滑动窗口】【中等】
  • 天猫超市电商营销系统:无代码开发实现API连接集成
  • element表格分页+数据过滤筛选
  • 小程序判断是否授权位置信息和手动授权
  • 2023年亚太杯数学建模亚太赛A题思路解析+代码+论文
  • 【Android】画面卡顿优化列表流畅度六(终篇)
  • 一文了解:离散型制造业轻量化MES解决方案
  • 《云计算:云端协同,智慧互联》
  • Java stream流 常用记录
  • Spring Security6 用户身份认证
  • 钩子函数-hook
  • 拉链表-spark版本
  • 【笔记1-2】Qt系列:QkeyEvent 键盘事件 设定快捷键