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

网站核验单下载百度资讯指数

网站核验单下载,百度资讯指数,o2o网站大全,长春网站制作允许吗文章目录 快速排序[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/54501.html

相关文章:

  • 静态网页模板免费网站世界羽联最新排名
  • 云开发网站贵阳网站建设制作
  • 租号网站怎么做的百度热词指数
  • 连云港网站关键字优化市场写软文的平台有哪些
  • 党建网站设计引流推广多少钱一个
  • 网站首页动画效果北京最新疫情情况
  • 网站上传的图片怎么做的清晰一个新品牌怎样营销推广
  • 帮人做网站赚钱吗我是站长网
  • 怎么做万网网站吗网店营销
  • 酒店网站策划书河北seo诊断培训
  • 做网站是需要多少钱推广软件下载
  • 网站设计教程宁波seo网络推广选哪家
  • 奶茶加盟网站建设百度推广怎么优化关键词的质量
  • 长春火车站咨询电话关键词林俊杰mp3
  • 零基础wordpressseo排名优化培训
  • 做游戏网站年入百万百度地图导航2022最新版下载
  • 为什么用MyEclipse做网站宁波seo公司
  • 做橱窗设计的网站新闻发稿推广
  • 商城系统网站模板网络营销的优势
  • 广州市建设工程造价站网站南安网站建设
  • 做网站没有创意网络营销品牌案例
  • 文化传播做网站推广吗自媒体引流推广
  • 百度网站收入电商运营模式
  • 网站建设趋势2017产品推广方案怎么写
  • java初学者用什么软件seo外链软件
  • 织梦搭建企业网站免费的大数据分析平台
  • 建设网站的报告做网络推广
  • 安卓软件定制开发南京seo代理
  • 洛阳做网站找哪家近期舆情热点事件
  • 网站开发用苹果电脑青岛网