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

如何创办一个网站沈阳网站排名优化

如何创办一个网站,沈阳网站排名优化,成都网站线上公司,深圳产品推广网站建设方案文章目录 快速排序[leetcode 215数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/)分析题解快速排序 桶排序[leetcode 347 前K个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/)分析题解 快速排序 leetcode 215数组…

文章目录

  • 快速排序
  • [leetcode 215数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/)
    • 分析
    • 题解
    • 快速排序
  • 桶排序
  • [leetcode 347 前K个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/)
    • 分析
    • 题解

快速排序

leetcode 215数组中的第K个最大元素

分析

对于这种“第K个元素”的问题,可以用快速选择,它是对快速排序的一种简化。快速排序采用分治思想,将数组分为两个子数组,每次划分数组都随机选择一个元素,小于该元素的在一个数组,大于该元素的在另一个数组。递归执行划分数组操作,直到数组全部完成排序。
而快速选择针对某个元素,它不要求对两个子数组排序,仅仅递归划分“第K个元素”在的那个子数组即可,直到获得“第K个元素”的位置。为了避免两个子数组,一个长度为1,一个长度为n-1的极端情况,每次划分数组时随机选择元素。

题解

class Solution {static Random random = new Random();public int findKthLargest(int[] nums, int k) {int n = nums.length;int target = n - k;int left = 0;int right = n - 1;while(true) {int pivot = partition(nums, left, right);if (pivot == target) {return nums[pivot];} else if (pivot < target) {left = pivot + 1;} else {right = pivot - 1;}}}private int partition(int[] nums, int left, int right) {int randomIndex = left + random.nextInt(right - left + 1);swap(nums, randomIndex, left);int l = left + 1;int r = right;while (true) {while (l <= r && nums[r] > nums[left] ) {r--;}while (l <= r && nums[l] < nums[left] ) {l++; }if (l >= r) {break;}swap(nums, l, r);l++;r--;}swap(nums, left, r);return r;}private void swap(int[] nums, int i1, int i2) {int temp = nums[i1];nums[i1] = nums[i2];nums[i2] = temp;}
}

快速排序

quickSort通过递归实现快速排序。

class Solution {static Random random = new Random();public void quickSort(int[] nums, int left, int right) {if (left < right) {int index = partition(nums, left, right);quickSort(nums, left, index - 1);quickSort(nums, index + 1, right);}}private int partition(int[] nums, int left, int right) {int randomIndex = left + random.nextInt(right - left + 1);swap(nums, randomIndex, left);int l = left + 1;int r = right;while (true) {while (l <= r && nums[r] > nums[left] ) {r--;}while (l <= r && nums[l] < nums[left] ) {l++; }if (l >= r) {break;}swap(nums, l, r);l++;r--;}swap(nums, left, r);return r;}private void swap(int[] nums, int i1, int i2) {int temp = nums[i1];nums[i1] = nums[i2];nums[i2] = temp;}
}

桶排序

leetcode 347 前K个高频元素

分析

首先统计元素频次,之后对频次建桶,桶里内容是该频次对应的元素们。最后根据频次高低返回K个元素。

题解

class Solution {public int[] topKFrequent(int[] nums, int k) {Map<Integer, Integer> map = new HashMap<>();for (int num : nums) {map.put(num, map.getOrDefault(num, 0) + 1);}List<Integer>[] list = new List[nums.length + 1];for (int num : map.keySet()) {int count = map.get(num);if (list[count] == null) {list[count] = new ArrayList<Integer>();}list[count].add(num);}int[] res = new int[k];int idx = 0;for (int i = list.length - 1; i >= 0 && idx < k; i--) {if (list[i] == null ) {continue;}while (!list[i].isEmpty()) {res[idx++] = list[i].getLast();list[i].removeLast();}}return res;}
}
http://www.yayakq.cn/news/62667/

相关文章:

  • 天津网站建设报价网站邮箱接口怎么设置
  • 地方网站自助建站网络营销是什么课
  • 企业网站管理系统手机版教程网页网络优化
  • 查网站服务器速度那间公司做网站好
  • sever2012做网站专门教做衣服的网站
  • 郴州网站建设公司电话wordpress图片下载水印
  • 外包网站建设多少钱网页制作基础教程9787121095306教案
  • 网站建设公司做销售前景好不好?2008vps做网站
  • 网站建设的具体任务有哪些wordpress dns预加载
  • 网站添加支付宝手机网站 分享
  • 珠海市品牌网站建设平台口碑好企业网站建设
  • 网站seo案例无锡网站建设制作开发
  • 手机网站怎么做优化北京微信网站开发费用
  • 地方o2o同城网站源码谷歌浏览器网页版入口手机版
  • 上杭县建设局网站涨口碑说做的网站
  • 新建设网站如何推广专做皮鞋销售网站
  • 模板网站的好处软件开发方案怎么写
  • 广州seo关键字推广河北廊坊seo网站建设网站优化
  • 厦门做网站的公司有哪些网站定制开发 团队
  • 北京建设教育协会网站首页淘宝网网页版登录卖家中心
  • 郑州网站建设知名公司大庆工程建设公司网站
  • 后缀的域名暂无法进行网站备案wordpress中英主题
  • 网站设计的汕头公司龙华做手机网站
  • 大庆市萨尔图区建设局网站.net网站开发优点
  • 网站建设前期开发济南网站建设wuliankj
  • 泉州网站制作2345网址导航设置
  • 如何自己做软件网站sql2005做网站
  • 网站调用优酷视频去除广告wordpress 餐饮
  • 扶贫办门户网站建设管理办法短视频seo搜索优化
  • 网站排版策划在线制作图片用什么软件好用