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

北京外包公司 网站开发桂林市住房和城乡建设局网站

北京外包公司 网站开发,桂林市住房和城乡建设局网站,深圳小程序建设公司,小程序制作流程微信前言 这是我参加的第二次训练营!!!爽!这次我将更加细致的写清每一道难题,不仅是提升自己,也希望我自己的写的文章对读者有一定的帮助! 打卡代码随想录算法训练营第55期第十一天(づ…

前言

这是我参加的第二次训练营!!!爽!这次我将更加细致的写清每一道难题,不仅是提升自己,也希望我自己的写的文章对读者有一定的帮助!

打卡代码随想录算法训练营第55期第十一天(づ ̄3 ̄)づ╭❤~ 

首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第55期的训练营大家庭一起进步。


今日题目

在学习今日的题目前先看:栈与队列的内部实现机制

LeetCode 150 逆波兰表达式求值

题目链接:150 逆波兰表达式求值

文章讲解:逆波兰表达式求值

视频讲解:卡哥讲解 —— 逆波兰表达式求值

本题依旧是使用了栈的特色,理解起来还行就是遇到数存起来,遇到符号取出计算,主要注意减和除的顺序问题,以及想明白最后结果的存储位置。

public class Solution {public int EvalRPN(string[] tokens) {Stack<int> st = new Stack<int>();for(int i = 0; i < tokens.Length; i++){//如果是符号则取出两个值来计算//注意这里令第一个取出的数为num2 第二个数为num1//且所有的计算都是num1 ... num2if(tokens[i] == "+"){int num2 = st.Pop();int num1 = st.Pop();st.Push(num1 + num2);}else if(tokens[i] == "-"){int num2 = st.Pop();int num1 = st.Pop();st.Push(num1 - num2);}else if(tokens[i] == "*"){int num2 = st.Pop();int num1 = st.Pop();st.Push(num1 * num2);}else if(tokens[i] == "/"){int num2 = st.Pop();int num1 = st.Pop();st.Push(num1 / num2);}elsest.Push(int.Parse(tokens[i]));}//最后结果就是栈中的唯一的值return st.Pop();}
}

LeetCode 239 滑动窗口最大值

题目链接:239 滑动窗口最大值

文章讲解:滑动窗口最大值

视频讲解:卡哥讲解 —— 滑动窗口最大值

滑动窗口的最大值也算是一道相对来说难一点的题,主要理解如何维持滑动窗口,为什么要维持滑动窗口,其实原因很简单,因为我们只需要取得滑动窗口的最大值,我们只需要让每个窗口的最大值放在首位即可,方面明了,后面的内容也可以依次排序。最后是选用什么样的容器来模拟滑动窗口,以及实现的细节。

public class Solution {public int[] MaxSlidingWindow(int[] nums, int k) {List<int> res = new List<int>();MyQueue queue = new MyQueue();for(int i = 0; i < k; i++)//先装够滑动窗口的数量queue.Enqueue(nums[i]);res.Add(queue.Max());//添加第一个值for(int i = k; i < nums.Length; i++){//之后反复添加删除求值即可queue.Dequeue(nums[i - k]);queue.Enqueue(nums[i]);res.Add(queue.Max());}return res.ToArray();} 
}
public class MyQueue
{//使用一个容器来模拟整个队列,需要维持容器第一个值为最大值//这里使用链表public LinkedList<int> queue = new LinkedList<int>();//填入数据方法public void Enqueue(int num){//如果比整个容器最后一个数据要大,就替换这个数据while(queue.Count > 0 && num > queue.Last.Value)queue.RemoveLast();queue.AddLast(num);}public void Dequeue(int num){//如果要移除的数是最大值,则才用移除if(num == queue.First.Value)queue.RemoveFirst();}public int Max(){//最大值就是第一个值return queue.First.Value;}
}

LeetCode 347 前K个高频元素

题目链接:347 前K个高频元素

文章讲解:前 K 个高频元素

视频讲解:卡哥讲解 —— 前 K 个高频元素

本题主要利用优先级队列的属性来做题,优先级队列主要就是求得一组数据最大的几个和最小的几个,利用大小顶堆的原理来封装。如果了解优先级队列,则这个题很好做,如果不了解,那就从这道题开始了解吧!C#中的优先级队列是PriorityQueue<内容,优先级>

public class Solution {public int[] TopKFrequent(int[] nums, int k) {//统计每个元素的频率Dictionary<int,int> dic = new Dictionary<int,int>();for(int i = 0; i < nums.Length; i++){if(dic.ContainsKey(nums[i]))dic[nums[i]]++;elsedic.Add(nums[i] , 1);}//设置优先级队列,求得前k个高频元素PriorityQueue<int , int> pq = new PriorityQueue<int , int>();foreach(var num in dic){pq.Enqueue(num.Key , num.Value);if(pq.Count > k)pq.Dequeue();}//将结果填入数组int[] res = new int[k];for(int i = k - 1; i >= 0; i--)res[i] = pq.Dequeue();return res;}
}

http://www.dtcms.com/wzjs/817808.html

相关文章:

  • 成都网站建设哪里好网站域名在哪备案
  • 万宁网站建设企业网站 域名注册
  • 如何规避电子政务网站建设教训网站建设深圳给源码
  • 包装设计网站有哪些a963室内设计网
  • 个性化网站建设公司自建微网站服务器
  • 有个专门做简历的网站叫wordpress 头条主题
  • 网站建设初期目标杭州市建筑业协会官网
  • 推客易可以做自己的网站吗中国建筑网官网企业文化
  • 建立网站需要什么技术wordpress盈利
  • 同安区建设局网站搭建论坛网站的流程
  • 网页制作和网站开发实验报告网址检测
  • 阿里云可以建设网站吗惠州双语网站建设费用
  • 衡水市做网站做暧暧小视频有声音的网站
  • 外贸仿牌网站建设遵义市播州区建设厅网站
  • 网站建设中可能遇到的问题网站建设与管理 ppt
  • 网站站点是什么?如何创建站点?临沂做网站的公司有哪些
  • 网站建设之织梦后台熊掌号主页策划案推广
  • 偃师做网站招聘高级网站建设
  • 坊子营销型网站建设宁国做网站的
  • 中国建设银行购物网站沈阳健网站
  • 深圳海外网站建设网站怎么做域名实名认证
  • 网站的推广优化免费商城app
  • 无锡常规网络营销是什么seo百度快照优化公司
  • 老区建设促进会网站泰州网站推广见效快
  • 住房和城市建设厅网站大连做网站优化公司
  • 网站建设 教材 推荐能用于制作网页的软件
  • flash网站的优势网站建设技术包括
  • 苏州网站建设报价网站开发攻略
  • 网站同时做竞价和优化可以软件开发哪个培训机构好
  • 怎样制作自己公司的网站郑州软件公司排行榜