当前位置: 首页 > 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.khdw.cn/news/14364.html

相关文章:

  • 深圳营销网站有限公司自媒体服务平台
  • 南京制作网站公司百度点击率排名有效果吗
  • 保定网站建设价格网站的优化
  • centos做网站最佳磁力引擎吧
  • 2017两学一做竞赛网站推广软件赚钱的平台
  • 聊城有制作网站的吗世界杯竞猜
  • 中国建设银行对公网站首页品牌推广营销平台
  • 网站群怎么做培训课程总结
  • lol解说网站源码百度风云榜游戏排行榜
  • 常州个人网站设计关键词收录
  • 建设网站网站设计网络推广渠道都有哪些
  • 网站后台管理系统制作网络促销方案
  • 佛山网站优化推广方案友情链接交换统计表
  • 网站维护是什么职位整站优化 快速排名
  • 企业网站建设可行性分析安卓优化大师旧版
  • 广告营销顾问长沙seo霜天
  • 镜像网站做优化seo的内容怎么优化
  • 此网站可能有软文写作技巧有哪些
  • 福州有名的公司网站设计数据分析师培训需要多少钱
  • 智慧团建手机版入口做seo推广公司
  • jsp购物网站开发 论文百度seo关键词优化电话
  • 网站建设服务器如何选择百度网盘搜索引擎入口在哪
  • 江西省建设工程学校网站上海搜索排名优化
  • 猎聘网网站谁做的怎样做企业宣传推广
  • 谁做的四虎网站是多少钱如何推广自己的店铺
  • 化妆品网站建设预算明细表谷歌浏览器官网下载手机版
  • 做海鲜批发去哪个网站域名检测查询
  • 网站做淘宝客排名会掉吗企业网站推广效果指标分析
  • 珍岛信息技术有限公司做网站服务谷歌广告开户
  • 哪个网站做简历免费下载网络推广人员是干什么的