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

怎样建设学校网站/汕头seo外包平台

怎样建设学校网站,汕头seo外包平台,做网站业务员提成几个点,有什么做网站好用的软件目录 一、1046.最后一块石头的重量二、703. 数据流中的第 K 大元素三、692. 前 K 个⾼频单词四、295. 数据流的中位数 一、1046.最后一块石头的重量 题目链接:1046.最后一块石头的重量 题目描述: 题目解析: 题意就是让我们拿出提供的数组…

目录

  • 一、1046.最后一块石头的重量
  • 二、703. 数据流中的第 K 大元素
  • 三、692. 前 K 个⾼频单词
  • 四、295. 数据流的中位数

一、1046.最后一块石头的重量

题目链接:1046.最后一块石头的重量
题目描述:

题目解析:

  • 题意就是让我们拿出提供的数组的最大两个值,大减小作差,将差值再放入数组,直到数组空了或者只有一个元素为止。

解题思路:

  • 题目要求我们在一个乱序的数组中找最大两个值,我们首先想到数组排序,但是由于我们还需要将差值放入数组,我们放一次就需要排序一次。
  • 使用优先级队列,大根堆,开销会小一些,我们只需要每次拿堆顶元素即可。

解题代码:

//时间复杂度 O(n)
//空间复杂度 O(n)
class Solution {public int lastStoneWeight(int[] stones) {//创建大根堆PriorityQueue<Integer> queue = new PriorityQueue<>((a,b) -> b - a);//入堆for(int i = 0; i < stones.length; i++)queue.offer(stones[i]);//执行逻辑while(!queue.isEmpty() && queue.size() != 1) {int y = queue.poll();int x = queue.poll();queue.offer(y-x); }//返回值return queue.isEmpty() ? 0 : queue.poll();}
}

二、703. 数据流中的第 K 大元素

题目链接:703. 数据流中的第 K 大元素

题目描述:

题目解析:

  • 给我们一个数组和一个数K,让我们在使用类的add方法后,返回数组中的第K大的数。
    解题思路:
  • 我们使用一个大小为K的小根堆,那么我们剩下在堆中的数,就是数组中第K大到最大的值。
  • 返回数组中的第K大的数,就是当前的堆顶。

解题代码:

//时间复杂度 O(nLogK)
//空间复杂度 O(K)
class KthLargest {PriorityQueue<Integer> heap;int param_1;public KthLargest(int k, int[] nums) {heap = new PriorityQueue<Integer>();param_1 = k;for(int i = 0; i < nums.length; i++) {heap.offer(nums[i]);if(heap.size() > param_1) {heap.poll();}}}public int add(int val) {heap.offer(val);if(heap.size() > param_1) {heap.poll();}return heap.peek();}
}

三、692. 前 K 个⾼频单词

题目链接:692. 前 K 个⾼频单词

题目描述:

题目解析:

  • 给我们一个words的字符串数组,让我们返回数组中出现的频率次数最多到第K多的字符串。
  • 当出现频次相同的时候,就直接按照字典顺序,字母前到后比较大小,大在前。

解题思路:

  • 我们使用一个hash表,记录下字符串与其出现的次数。
  • 在使用一个大小为K的堆,当我们的频次就是hash表中的value相同的时候,我们使用compare比较大小,创建的是大根堆,其余比较频次是小根堆。总体上看还是一个小根堆。
  • 最后一次取出堆中的字符串即可,但是由于返回值又是从小到大,最后将结果数组逆序即可。
    解题代码:
//时间复杂度:O(NLogK)
//空间复杂U度:O(N)
class Solution {public List<String> topKFrequent(String[] words, int k) {Map<String, Integer> hash = new HashMap<>();PriorityQueue<Pair<String,Integer>> heap = new PriorityQueue<>((a,b) -> {//频次相同大根堆if(a.getValue().equals(b.getValue())) {return b.getKey().compareTo(a.getKey());}//小根堆return a.getValue() - b.getValue();});//hash初始化for( String s : words) {hash.put(s, hash.getOrDefault(s ,0) + 1);}//入堆for(Map.Entry<String, Integer> e : hash.entrySet()) {heap.offer(new Pair<>(e.getKey(),e.getValue()));if(heap.size() > k) {heap.poll();}}//结果处理List<String> ret = new ArrayList<String>();while(!heap.isEmpty()) {ret.add(heap.poll().getKey());}//逆置Collections.reverse(ret);return ret;} 
}

四、295. 数据流的中位数

题目链接:295. 数据流的中位数

题目描述:

  • 就是让我们实现一个类,有初始化,添加元素(每次添加一个),查看元素中位数

题目解析:

  • 我们只需要每次拿取类中的元素的时候,能够直接拿到中位数即可。
  • 我们可以使用两个堆,小根堆记录数的中位数之后的部分,大根堆记录中位数的前半部分。
  • 这样当元素个数是偶数个的时候,我们直接拿到两个堆的堆顶元素即可。为奇数个元素的时候,直接取出堆元素多的那个的堆顶元素即可。

解题思路:

  • 我们使用两个堆,一个大根堆,一个小根堆,在记录下当前的元素个数。
  • 当插入元素后,元素个数为偶数:
    • 当插入元素比大根堆堆顶元素大:
      • 大根堆中元素个数比小根堆多:直接将待插入元素插入小根堆即可。
      • 大根堆中元素个数比小根堆少:将小根堆堆顶元素和待插入元素较小值,插入大根堆。另一个给小根堆。
    • 当插入元素比大根堆堆顶元素小:
      • 大根堆中元素个数比小根堆多:将大根堆堆顶元素插入小根堆。待插入元素给大根堆。
      • 大根堆中元素个数比小根堆少:直接将待插入元素插入大根堆即可。
  • 当插入元素后,元素个数为奇数:
    • 当插入元素比大根堆堆顶元素大:插入小根堆。
    • 当插入元素比大根堆堆顶元素小:插入大根堆。

解题代码:

//时间复杂度:O(LogN)
//空间复杂度:O(N)
class MedianFinder {//列表中元素个数int n = 0;//大根堆记录前半部分值PriorityQueue<Integer> big;//小根堆记录后半部分值PriorityQueue<Integer> little;public MedianFinder() {big = new PriorityQueue<>((a,b) ->{return b-a;});little = new PriorityQueue<>();}public void addNum(int num) {n += 1;if(n == 1 ) {big.offer(num);return;}//元素个数为偶数,比前面的大if(n % 2 == 0 && big.peek() <= num) {//保持前后数据平衡if(big.size() < little.size()) {//比后面小if(!little.isEmpty() && little.peek() >= num) {big.offer(num);}else {int tmp = little.poll();big.offer(tmp);little.offer(num);}}else {little.offer(num);}return;} //元素个数为偶数,比前面的小if(n % 2 == 0 && big.peek() > num) {//保持前后数据平衡if(big.size() < little.size()) {big.offer(num);}else {int tmp = big.poll();big.offer(num);little.offer(tmp);}return;} //元素个数为奇数,比前面小if(n % 2 != 0 && big.peek() >= num) {big.offer(num);} else {little.offer(num);}}public double findMedian() {if(n % 2 == 0) {return (double)((big.peek() + little.peek())/ 2.0);}if(big.size() > little.size()) {return big.peek();} else {return little.peek();}}
}
http://www.jmfq.cn/news/5340223.html

相关文章:

  • 深圳网络营销|深圳网站建设公司|专业网络营销运营推广策划公司/抖音营销推广方案
  • 山东省建设业协会网站/网络优化大师手机版
  • 如何加强网站管理的队伍建设/网络营销工具分析
  • 龙华区住房和建设局官方网站/关键词汇总
  • 网站建设一般需要几个步骤/如何做平台推广赚钱
  • 课程网站建设内容/简述获得友情链接的途径
  • 虚拟主机建设网站两个/微信营销方案
  • 通州手机网站建设/武汉seo关键词排名
  • 贵州黔水建设股份有限公司网站/抖音十大搜索关键词
  • 单位政府网站建设情况汇报/搜索优化的培训免费咨询
  • windows 建设网站/大连最好的做网站的公司
  • 相亲网站建设策划书范文/西安网站seo外包
  • 中国建设银行网站包头分行/长春seo优化
  • 中国城乡建设部网站首页/关键词指数批量查询
  • 江苏省内网站建设/广州全网推广
  • 个性化网站建设公司/国外免费源码共享网站
  • 网站建设 表扬信/最近三天发生的重要新闻
  • 电影网站的建设/做企业推广的公司
  • 建设部办公厅网站/seo免费优化网址软件
  • 门户网站的建设意义/解析域名网站
  • 智能科技 光速东莞网站建设/百度首页广告
  • 青岛企业网站建设/微信广告
  • 泰州建设局网站安监站通报/杭州seo公司
  • 新疆住房和城乡建设部网站官网/2020十大网络热词
  • 网站建设皿金手指谷哥壹柒/山东百度推广代理
  • 网站建设及推广文案/seo最新教程
  • 拼团网站建设/南昌百度seo
  • 黑龙江省建设造价协会网站/品牌运营管理公司
  • 松江叶榭网站建设/百度广告投放代理商
  • 如何建设政府门户网站/最近的时事新闻