
力扣刷题之快速排序
迪恩_Emma
喜欢看书的Java开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
406. 根据身高重建队列(中等)
思路: 先按身高降序排列,如果身高相等,就按人数升序排序 代码: class Solution { public int[][] reconstructQueue(int[][] people) { Arrays.sort(people,new Comparator<int[]>(){ public int compare(int[] a,int[] b){ if(a[0]!=b[0]){ //按身高降序 return b[0]-a[0.原创 2021-06-13 10:19:24 · 150 阅读 · 0 评论 -
215. 数组中的第K个最大元素(中等)
思路: 1.暴力快排Arrays.sort() 2.分治(快速排序) 代码: class Solution { public int findKthLargest(int[] nums, int k) { int target=nums.length-k; int index=partition(nums,0,nums.length-1,target); return nums[index]; } private int partition(int[] nums,.原创 2021-06-09 09:02:01 · 129 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字(简单)
思路: 使用双指针,可以使时间复杂度提升为O(N),而暴力法起码要O(N^2) 代码: class Solution { public int[] twoSum(int[] nums, int target) { int i=0,j=nums.length-1; while(i<j){ int s=nums[i]+nums[j]; if(s<target){ i++; } else if(s>target){ j--; .原创 2021-05-12 09:50:42 · 94 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数(中等)
思路: 实际上就是排序,将数组排好序,然后一个个接到StringBuilder中 方法一:自定义双边快速排序 方法二:重写Arrays.sort()方法,该方法本质也是一个快排 方法三:小顶堆(小的在堆顶) 代码: 方法一: class Solution { public String minNumber(int[] nums) { StringBuilder res=new StringBuilder(); String[] str=new String[num.原创 2021-05-06 21:42:15 · 172 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数(简单)
思路: 方法一:java给的函数方法Arrays.sort 方法二:快速排序+二分 方法三:大根堆(前k小),默认是小根堆,所以要重写 代码: 方法一: class Solution { public int[] getLeastNumbers(int[] arr, int k) { Arrays.sort(arr); int[] res=new int[k]; for(int i=0;i<k;i++){ res[i]=arr[i]; } retu.原创 2021-05-04 11:25:12 · 414 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面(简单)
思路: 利用双指针快排 代码: class Solution { public int[] exchange(int[] nums) { int left=0,right=nums.length-1; while(left<right){ while(left<right&&nums[left]%2!=0){ left++; } while(left<right&&nums[right]%2==0){ .原创 2021-04-24 10:08:19 · 84 阅读 · 0 评论