刷题笔记18——数组查缺补漏、二分搜索变体

人就是这样的,想来想去,犹豫来犹豫去,觉得自己没有准备好,勇气没攒够,其实只要迈出去了那一步,就会发现其实所有的一切,早就准备好了。——巫哲Q《撒野》

528. 按权重随机选择

  • 轮盘赌
class Solution {int wsum;int[] res;public Solution(int[] w) {res = w;  wsum=0;for(int i=0;i<res.length;i++){wsum += res[i];}}public int pickIndex() {double randnum = (double)(Math.random() * wsum);int temp = res[0];for(int i=0;i<res.length;i++){if(temp<randnum){temp = temp+res[i+1];}else{return i;}}return 0;}
}

二分搜索的出现变体形式(使……最大值最小,将最大值的范围作为数组,使用左右指针进行逼近)

1011. 在 D 天内送达包裹的能力

  • 想到了思路但是不敢写是什么毛病,总觉得自己是错的
class Solution {public int shipWithinDays(int[] weights, int days) {int sumnum = 0;int maxnum = 0;for(int i=0;i<weights.length;i++){sumnum += weights[i];maxnum = maxnum>weights[i]?maxnum:weights[i];}int left = maxnum;int right = sumnum;while(left<=right){if(isPackage(weights,days,(left+right)/2)){right = (left+right)/2-1;}else{left = (left+right)/2+1;}}return left;}boolean isPackage(int[] weights,int days,int lowweight){int day = 0;int sumweight=0;int i=0;while(i<weights.length){if(sumweight+weights[i]<=lowweight){sumweight += weights[i];i++;}else{day++;sumweight = 0;}}return day<days;}
}

410. 分割数组的最大值

class Solution {public int splitArray(int[] nums, int k) {int maxnum = 0;int sumnum = 0;for(int i=0;i<nums.length;i++){maxnum = maxnum>nums[i]?maxnum:nums[i];sumnum += nums[i];}int left = maxnum;int right = sumnum;while(left<=right){if(isMin((left+right)/2,nums,k)){right = (left+right)/2-1;}else{left = (left+right)/2+1;} }return left;}boolean isMin(int sum, int[] nums,int k){int s = 0;int t = 0;int i = 0;while(i<nums.length){if(s+nums[i]<=sum){s += nums[i];i++;}else{s = 0;t++;}}return t<k;}
}

875. 爱吃香蕉的珂珂

  • 调试的错误是:两整数进行相除向上取整时,需要对整数先转double,然后结果再int
    int avgnum = (int)Math.ceil((double)sumnum/h);
  • 结果中出现如下报错时,我修改了数据类型为long,问题解决
    在这里插入图片描述
class Solution {public int minEatingSpeed(int[] piles, int h) {long sumnum=0;int maxnum=0;for(int i=0;i<piles.length;i++){maxnum = maxnum>piles[i]?maxnum:piles[i];sumnum += piles[i];}int avgnum = (int)Math.ceil((double)sumnum/h);int left = avgnum;int right = maxnum;while(left<=right){if(ismeet((left+right)/2,piles,h)){right = (left+right)/2 -1;}else{left = (left+right)/2 + 1;}}return left;}boolean ismeet(int vol,int[] piles,int h){int time = 0;for(int i=0;i<piles.length;i++){time += (int)Math.ceil((double)piles[i]/vol);}return time<=h;}
}  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/102068.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

synchronized 关键字

synchronized是Java中的关键字&#xff0c;它用于实现同步访问共享资源&#xff0c;可解决共享资源竞争问题&#xff0c;以确保多个线程之间共享资源访问的正确性。当一个方法或代码块被声明为synchronized时&#xff0c;只有一个线程可以执行该方法或代码块。其他尝试访问该方…

面试题 17.16. 按摩师

按摩师&#xff08;easy&#xff09; 题目链接: 面试题 17.16. 按摩师 题目描述: 一个有名的按摩师会收到源源不断的预约请求&#xff0c;每个预约都可以选择接或不接。在每次预约服务之间要有休息时间&#xff0c;因此她不能接受相邻的预约。给定一个预约请求序列&#xff0c…

冠达管理:股票退市整理期?

近些年来&#xff0c;随着我国股市的发展&#xff0c;股票市场的出资者逐渐增多。但在出资过程中&#xff0c;退市股票的问题也成为了备受重视的论题。那么&#xff0c;股票退市收拾期到底是什么&#xff1f;如何应对退市股票&#xff1f; 首要&#xff0c;什么是股票退市收拾…

【ES】笔记-Class类剖析

Class Class介绍与初体验ES5 通过构造函数实例化对象ES6 通过Class中的constructor实列化对象 Class 静态成员实例对象与函数对象的属性不相通实例对象与函数对象原型上的属性是相通的Class中对于static 标注的对象和方法不属于实列对象&#xff0c;属于类。 ES5构造函数继承Cl…

【LeetCode-中等题】46. 全排列

文章目录 组合并集问题汇总&#xff1a;题目方法一&#xff1a;递归回溯 组合并集问题汇总&#xff1a; 1、子集去重版本 2、组合去重版本 3、子集非去重版本 题目 这题中nums中的数各不相同&#xff0c;所以不需要去重&#xff1a; 而下面这题&#xff0c;nums中的数会存在重…

javaee spring 测试aop 切面

切面类 package com.test.advice;import org.aspectj.lang.ProceedingJoinPoint;//增强类 public class MyAdvice {//将这个增强方法切入到service层的add方法前public void before(){System.out.println("添加用户之前");}}目标类 package com.test.service;publi…

【脑机接口】基于运动想象的康复指导在脑卒中偏瘫患者中的应用

【摘要】 目的 探讨运动想象康复指导对脑卒中偏瘫患者的康复效果及意义。 方法 将 60例脑卒中偏瘫患者随机分为观察组(n31)和对照组(n29)&#xff0c;对照组的康复训练指导采用讲解示范法&#xff0c;观察组采用运动想象法 。比较两组 患者 的运 动功能 、日常生活 活动能力及 …

【EI会议征稿】第三届机械自动化与电子信息工程国际学术会议(MAEIE 2023)

第三届机械自动化与电子信息工程国际学术会议&#xff08;MAEIE 2023&#xff09; 第三届机械自动化与电子信息工程国际学术会议&#xff08;MAEIE 2023&#xff09;将于2023年12月15-17日在江苏南京举行。本会议通过与业内众多平台、社会各团体协力&#xff0c;聚集机械自动…

RabbitMQ学习笔记

1、什么是MQ&#xff1f; MQ全称message queue&#xff08;消息队列&#xff09;&#xff0c;本质是一个队列&#xff0c;FIFO先进先出&#xff0c;是消息传送过程中保存消息的容器&#xff0c;多 用于分布式系统之间进行通信。 在互联网架构中&#xff0c;MQ是一种非常常见的…

【数据库】MySQL基础知识全解

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招面试的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于拓跋阿秀、小林coding等大佬博客进行的&#xff0c;每个知识点的修…

一百七十三、Flume——Flume写入HDFS后的诸多小文件问题

一、目的 在用Flume采集Kafka中的数据写入HDFS后&#xff0c;发现写入HDFS的不是每天一个文件&#xff0c;而是一个文件夹&#xff0c;里面有很多小文件&#xff0c;浪费namenode的宝贵资源 二、Flume的配置文件优化&#xff08;参考了其他博文&#xff09; &#xff08;一&a…

c语言初阶指针

目录 何为指针 地址大小 野指针 成因 如何规避 有效性 指针计算 -整数 ​编辑 指针比较运算 指针-指针 ​编辑 数组与指针关系 二级指针 指针数组 应用 何为指针 指针就是指针变量&#xff0c;用来存放内存空间的一个编号&#xff0c;将指针比作我们宾馆的客人&a…