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

做ppt的兼职网站wordpress 弹出视频

做ppt的兼职网站,wordpress 弹出视频,广州公司宣传片,在线免费logo设计生成器题目 给定一个整型数组arr#xff0c;和一个整数num 某个arr中的子数组sub#xff0c;如果想达标#xff0c;必须满足#xff1a; sub中最大值 – sub中最小值 num#xff0c; 返回arr中达标子数组的数量 暴力对数器 暴力对数器方法主要是用来和另一个方法互相校验正…题目 给定一个整型数组arr和一个整数num 某个arr中的子数组sub如果想达标必须满足 sub中最大值 – sub中最小值 num 返回arr中达标子数组的数量 暴力对数器 暴力对数器方法主要是用来和另一个方法互相校验正确性所以不用考虑时间复杂度。 因为要求的是子数组中的最大值和子数组中的最小值相减 num。所以整体思路是这样 求数组 0 ~ N - 1范围内所有子数组找到子数组中最小值看相减后是否达标如果达标则count进行计数。最后return count。 所有子数组挨个枚举就是 0~ 0范围内子数组0 ~ 1范围内子数组 0 ~ N - 1范围内子数组。 1 ~ 1范围内子数组1 ~ 2 范围内子数组 1 ~ N - 1范围内子数组…。 每个范围内子数组进行枚举需要两层for循环找到每个子数组范围内的最大值和最小值额外需要1层for循环所以时间复杂度是 O N 3 ON^3 ON3。 代码 public static int right(int[] arr, int sum) {if (arr null || arr.length 0 || sum 0) {return 0;}int N arr.length;int count 0;for (int L 0; L N; L) {for (int R L; R N; R) {int max arr[L];int min arr[L];for (int i L 1; i R; i) {min Math.min(min, arr[i]);max Math.max(max, arr[i]);}if (max - min sum) {count;}}}return count;}滑动窗口算法 采用滑动窗口算法的时间复杂度是 O N ON ON因为窗口不可回退所以只需要一次遍历即可找出所有符合条件的子数组。 这道题中需要2个窗口一个维护L…R范围内的最大值一个维护L…R范围内的最小值。而在看代码之前需要达成这样的2个共识 如果L…R范围内 max - min num那么L…R范围内所有子数组都满足 max - min num都会达标。如果L…R范围内 max - min num那么无论R继续向右扩窗口或者L继续向左阔窗口那L…R范围内子数组依然不达标。 解释1 因为max - min num所以L…R 范围内剩余子数组相减子数组范围内的两个数一定是 max min的最大值变小了最小值变大了所以一定会 num。 解释2 因为max - min num根据滑动窗口的特性在维护L…R范围内最大值的双端队列中后进来的数一定是当前双端队列中的值才会进行替换在维护L…R范围内最小值的双端队列中后进来的数一定是当前双端队列中的值才会进行替换。 所以无论向右或者向左范围内子数组一定依然不达标。 达成这两个共识之后代码就简单了很多在维护双端队列特性的同时如果满足 max - min num则R向右移直到不满足 max - min num为止。碰见一次不满足则计算一次当前子数组的个数直到循环完成。 代码 public static int num(int[] arr, int sum) {if (arr null || arr.length 0 || sum 0) {return 0;}LinkedListInteger minWindow new LinkedList();LinkedListInteger maxWindow new LinkedList();int R 0;int count 0;int N arr.length;for (int L 0; L N; L) {while (R N) {//如果max双端队列不为null并且队列尾端值当前值则弹出while (!maxWindow.isEmpty() arr[maxWindow.peekLast()] arr[R]) {maxWindow.pollLast();}maxWindow.addLast(R);//如果min双端队列不为null并且队列尾端值当前值则弹出while (!minWindow.isEmpty() arr[minWindow.peekLast()] arr[R]) {minWindow.pollLast();}minWindow.addLast(R);//如果满足条件则R一直 直到不满足条件为止if (arr[maxWindow.peekFirst()] - arr[minWindow.peekFirst()] sum) {R;} else {break;}}//看R - L范围内共有多少个子数组count R - L;//因为这两个判断走完L就要进行//所以需要判断当前双端队列中头部值是否要过期了if (maxWindow.peekFirst() L) {maxWindow.pollFirst();}if (minWindow.peekFirst() L) {minWindow.pollFirst();}}return count;}测试 随机生成数组和sum采用大数据样本量进行测试用上面两个方法来相互验证。 public static int[] generateRandomArray(int maxLength, int maxValue) {int[] arr new int[(int) ((maxLength 1) * Math.random())];for (int i 0; i arr.length; i) {arr[i] (int) ((maxValue 1) * Math.random());}return arr;}public static void main(String[] args) {int maxLength 40;int maxValue 10000;int sum 10000;int testNum 1000000;System.out.println(测试开始);for (int i 0; i testNum; i) {int[] arr generateRandomArray(maxLength, maxValue);sum (int) ((sum 1) * Math.random());int ans1 right(arr, sum);int ans2 num(arr, sum);if (ans1 ! ans2) {for (int num : arr) {System.out.print(num );}System.out.println();System.out.println(sum : sum);System.out.println(ans1 : ans1);System.out.println(ans2 : ans2);System.out.println(Oops!!);break;}}System.out.println(测试结束);}
http://www.hkea.cn/news/14476914/

相关文章:

  • 网站后台上图片后网页显示不正确虹口网站制作
  • asp源码打开网站建筑工程网络计划方法
  • 网站盗取图片可以做砍价链接的网站
  • 网站开发要用哪些语言开发网站建设违法行为
  • 刚做的网站怎么在百度上能搜到wordpress 后台实现轮播图
  • 合肥最好的网站建设公司排名关于用户网站建设的论文
  • 长沙哪些公司做网站西安网页设计培训班
  • 网站建设的需求怎么写网站制作需要哪些
  • 四川省住房与建设厅网站首页用divid做网站代码
  • 做网站要准备的资料金融投资公司网站模板
  • 高端的网站设计公司做网站需要学啥
  • 江门移动网站建设公司网站 购买
  • 微软雅黑做网站高级网站开发技术使用什么语言
  • 两个网站用一个空间网站关于我们怎么做
  • 个人网站可以做资讯小说类wordpress 导入幻灯片
  • 网页设计作业个人网站西北苗木网陕西泽基生态建设有限公司网站
  • 企业门户网站建设市场木材模板.网站
  • 弹性盒子做微网站大连线上教学
  • 网站怎样做百度推广计划南昌网站开发公司
  • 江苏建站系统网址软件下载
  • 如何在国外网站做翻译兼职织梦多语言网站
  • 怎么去创立一个网站怎么自己编写网站
  • 网站推广员怎么做国外购物网站怎么做
  • 我谁知道在哪里可以找人帮忙做网站局门户网站建设的目标
  • 开源网站搭建官网建设目的
  • 辽宁注册公司网站企业调查问卷
  • 公司网站备案网站名称有什么用江西省建设网站公司
  • 织梦网站后台苏州网站建设托管
  • 模板网站多钱赣州工作室
  • 郑州建材公司网站建设怎样设计一个网页