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

四川省住房与建设厅网站网站建设技巧

四川省住房与建设厅网站,网站建设技巧,做棋牌网站,婚纱摄影类网站模板代码随想录第三十五天 Leetcode 860. 柠檬水找零Leetcode 406. 根据身高重建队列Leetcode 452. 用最少数量的箭引爆气球 Leetcode 860. 柠檬水找零 题目链接: 柠檬水找零 自己的思路:我的垃圾思路!!!!!!复…

代码随想录第三十五天

    • Leetcode 860. 柠檬水找零
    • Leetcode 406. 根据身高重建队列
    • Leetcode 452. 用最少数量的箭引爆气球

Leetcode 860. 柠檬水找零

题目链接: 柠檬水找零
自己的思路:我的垃圾思路!!!!!!复杂度超高!!!不过好歹是自己想出来的哈哈哈哈哈!!!sh使用就是记录之前出现的5和10的个数(其实两个数就可以记录了),当出现10或者20的时候将对应的钱找给他!!!!

代码:

class Solution {public boolean lemonadeChange(int[] bills) {Map<Integer,Integer> map = new HashMap<>();for (int i =0;i<bills.length;i++){map.put(bills[i],map.getOrDefault(bills[i],0)+1);if (bills[i]==10){if (map.get(5)==null||map.get(5)==0){return false;}else{map.put(5,map.get(5)-1); }}if (bills[i]==20){if (map.get(5)==null||map.get(5)==0){return false;}else if (map.get(5)!=null&&map.get(5)!=0&&map.get(10)!=null&&map.get(10)!=0){map.put(5,map.get(5)-1); map.put(10,map.get(10)-1); }else if (map.get(10)==null||map.get(10)==0&&map.get(5)!=null&&map.get(5)!=0){map.put(5,map.get(5)-3);if (map.get(5)<0){return false;} }}}return true;}
}

复杂度分析
时间复杂度: O ( n ) \mathcal{O}(n) O(n)
空间复杂度: O ( n ) \mathcal{O}(n) O(n)

正确思路:和我的思路是一样的,只是我是用Map存的个数(我是智障),正确的应该使用两个数字来存储个数就可以!!!

代码:

class Solution {public boolean lemonadeChange(int[] bills) {int five = 0;int ten = 0;for (int bill:bills){if (bill==5) five++;else if (bill==10){if (five<=0) return false;else {five--;ten++;}}else{if (ten>0&&five>0){ten--;five--;}else if (five>=3){five -= 3;}else return false;}}return true;}
}

Leetcode 406. 根据身高重建队列

题目链接: 根据身高重建队列
自己的思路:想不到呀!!!

正确思路:这种有两个维度重新排列的,一般都是第一个维度从大到小排序,第二个维度从小到大排序,或者反过来,这样可能会使问题变简单!!!这道题的思路:先按身高从大到小进行排序,如果k相同的则按照k从小到大排序,排完序之后,新建一个数组来存放新的数据,然后遍历之前的数组,取出数组中的元素num,num应该是一个数组,第二个维度表示k,把k当做索引,将[k,num]按k的索引插入到新数组中去,感觉这道题只能背过做法,记住这种思考方式就行!!!

代码:

class Solution {public int[][] reconstructQueue(int[][] people) {//先按身高进行从大到小排序,身高相同k按从小到大排序Arrays.sort(people,(a,b)->{if (a[0]==b[0]) return a[1]-b[1];return b[0]-a[0];});ArrayList<int[]> queue = new ArrayList<>();for (int[] num:people){//向指定索引插入元素queue.add(num[1],num);}return queue.toArray(new int[people.length][]);}
}

Leetcode 452. 用最少数量的箭引爆气球

题目链接: 用最少数量的箭引爆气球
自己的思路:没想到!!!!

正确思路:贪心贪在少射几支箭!先按从小到大的顺序将每个气球的左边界排序,这样就比较好比较了,我们可以比较当前气球的左边界和上一个气球的右边界,如果当前气球的左边界大于上一个气球的右边界,说明一定不重叠而且不挨着,索引我们需要再加一支弓箭,否则我们需要更新我们的右边界来看一下后面还有没有气球是可以一起射下来的,当前数组的右边界更新为当前数组的右边界和上一个数组右边界的最小值,然后遍历整个数组就可以了!!!

代码:

class Solution {public int findMinArrowShots(int[][] points) {if (points.length==0) return 0;//将气球左边界从小到大排序Arrays.sort(points,(a,b)->Integer.compare(a[0], b[0]));//至少需要一支弓箭int result = 1;for (int i =1;i<points.length;i++){//如果当前气球左边界>上一个气球右边界,那么一定再需要一支箭if (points[i][0]>points[i-1][1]){result++;}else{//更新右边界,看看后面可不可以//右边界选取两个之间的最小值points[i][1] = Math.min(points[i-1][1],points[i][1]);}}return result;}
}
http://www.yayakq.cn/news/919570/

相关文章:

  • 专业网站建设品牌策划公司网站更换域名流程
  • 建设银行滇龙行网站如何将图床作为wordpress的插件
  • 7款优秀网站设计欣赏麦进斗网站建设
  • 茂名市制作网站的公司自驾游网站模板
  • 网站网络设计是怎么做的南通网页设计培训
  • 苏州高端网站建设设计公司响应式网站实例
  • 浙江华企网站做的咋样简洁高端网页
  • 土地流转网站开发房产网站建设公司
  • 西安企业建站在哪里做百度建网站
  • 驻马店做网站公司android开发平台
  • 戴尔的网站建设拉新app推广平台
  • 为什么搜索不到刚做的网站南通关键词优化平台
  • 电子商务网站建设的目标做团购网站的公司
  • 做 网站 技术支持 抓获 互助儋州网站建设培训学校
  • 珠海网站制作服务百度刷搜索词
  • 如何自己建设淘宝网站首页wordpress 查询页面
  • seo快速排名站外流量推广php网站建设程序
  • 阿里云网站建设好用吗网络营销教学大纲
  • 网站列表页内容wordpress 右边栏
  • 布吉附近做网站网站设计哪家专业
  • 网站建设方案书 个人备案品牌建设的最高境界是培育客户成为什么购买者
  • 电子商务网站规划 分析 设计英雄联盟手游小程序被投诉
  • 电商网站界面规范wordpress点击显示微信二维码
  • 济南模板建站软件网站建设公司小程序开发
  • 杭州网站建站平台小程序订货系统
  • 网站外链发布平台赣州网站建设哪家便宜
  • 网站做联盟广告能赚钱吗知名的软件开发公司
  • 网站建设公司如何规避风险相亲网站建设方案
  • 新沂网站建设看p站用什么浏览器
  • 宁波高端网站设计价格网络做翻译的网站