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

网站开发 哪种效率高广州广州网站建设公司

网站开发 哪种效率高,广州广州网站建设公司,打开链接即可玩的游戏,百度用户服务中心官网电话力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums #xff0c;原地对它们进行排序#xff0c;使得相同颜色的元素相邻#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sor…力扣75.颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums 原地对它们进行排序使得相同颜色的元素相邻并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况下解决这个问题。 class Solution { //时间复杂度为O(n)//其实变量 zero 相当于我们在三路快速排序算法中的 lt//变量 two 相当于我们在三路快速排序算法中的 gt。public void sortColors(int[] nums) {// nums[0...zero] 0, nums[zero 1, i] 1, nums[two, n - 1] 2// 定义三个指针zero、i、two分别表示0的最右边界、当前处理的元素、2的最左边界int zero -1, i 0, two nums.length;while(i two){// 当前处理元素的指针小于2的最左边界时继续循环// 如果当前元素为0将其与zero右边的元素交换并将zero和i都向右移动一位if(nums[i] 0){zero;swap(nums,zero,i);i;}// 如果当前元素为2将其与two左边的元素交换并将two向左移动一位else if (nums[i] 2){ // 注意此时不需要i右移因为交换后的元素还需要继续判断two --;swap(nums, i, two);}else{ //如果当前元素是1不需要操作直接继续向右遍历i ;}}}// 交换数组中指定位置的两个元素private void swap(int[] nums, int i, int j){int t nums[i];nums[i] nums[j];nums[j] t;} } 我们首先来封装一个 selectK 的方法。封装好了这个方法以后这三个问题都可 以快速求解。 我们的 selectK 的接口是这样的 // 在 arr[l...r] 的范围里求解整个数组的第 k 小元素并返回 // k 是索引即从 0 开始计算 int selectK(int[] arr, int l, int r, int k, Random rnd) 因为我们的 partition 过程需要随机选取标定点所以我们还需要传一个 Random快排的优化 类的对象 rnd。 定义好函数签名以后下面我们来书写相应的逻辑。 首先selectK 的过程我们就是要执行一遍 partition。在这里我使用双路快速 排序的 partition。 注意因为在这个问题中我们肯定我们处理的数据类型是 int所以在代码 中我不再使用泛型 private int partition(int[] arr, int l, int r, Random rnd){// 生成 [l, r] 之间的随机索引int p l rnd.nextInt(r - l 1);swap(arr, l, p);// arr[l1...i-1] v; arr[j1...r] vint i l 1, j r;while(true){while(i j arr[i] arr[l])i ;while(j i arr[j] arr[l])j --;if(i j) break;swap(arr, i, j);i ;j --; }swap(arr, l, j);return j; } private void swap(int[] arr, int i, int j){int t arr[i];arr[i] arr[j];arr[j] t; } 有了 partition我们的 selectK 的主题逻辑非常简单。 首先进行 partition假设结果是 p。我们只需要将 k 和 p 做比较。 如果 k p直接返回 arr[p] 即可如果 k p在 arr[l, p - 1] 的范围继续找即调用 selectK(arr, l, p - 1, k, rnd)如果 k p在 arr[p 1, r] 的范围继续找即调用 selectK(arr, p 1, r, k, rnd) 就有了下面的代码 private int selectK(int[] arr, int l, int r, int k, Random rnd){ int p partition(arr, l, r, rnd); if(k p) return arr[p]; if(k p) return selectK(arr, l, p - 1, k, rnd);return selectK(arr, p 1, r, k, rnd); } 这样我们就完成了 select K 的过程。是不是非常简单 下面我们用我们写的 select K先来解决 Leetcode 上第 215 号问题 这个问题是求第 k 大元素但是我们的 selectK 求得是第 k 小元素。怎么办 非常简单我们只需要在调用 select K 之前将求第 k 大元素的这个 k转换成 对应求的是第几小元素对应的索引就好了。 按照题目描述如果 k 是 1对应就是要找最大元素那么相应的我们的 select K 的索引就是 nums.length - 1。如果10个数K1第一个最大的数就是SelectK索引为9的那个的元素 如果 k 是 nums.length其实就是求最小元素那么相应的我们的 selectK 的 索引就是 0。  如果10个数第10个最大的数就是SelectK索引为0的那个的元素最小值 他们之间的转换关系是 nums.length - k。 力扣215.数组中的第K个最大元素  给定整数数组 nums 和整数 k请返回数组中第 k 个最大的元素。 请注意你需要找的是数组排序后的第 k 个最大的元素而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 import java.util.Random; //导入Random包 class Solution {public int findKthLargest(int[] nums, int k) {//只有两行其他的内容全部复用我们上面实现的 selectK是不是很酷//我们的SelectK是第K最小元素所以这里findKthLargest传入下标要处理一下//转换关系是 nums.length - kRandom rnd new Random();return selectK(nums, 0, nums.length - 1, nums.length - k, rnd);}//有了 partition我们的 selectK 的主题逻辑非常简单。private int selectK(int[] arr, int l, int r, int k, Random rnd){//首先进行 partition假设返回值结果是 p。我们只需要将 k 和 p 做比较。int p partition(arr, l, r, rnd); //如果 k p直接返回 arr[p] 即可if(k p) return arr[p]; //如果 k p在 arr[l, p - 1] 的范围继续找即调用 selectK(arr, l, p - 1, k, rnd)if(k p) return selectK(arr, l, p - 1, k, rnd); //如果 k p在 arr[p 1, r] 的范围继续找即调用 selectK(arr, p 1, r, k, rnd)return selectK(arr, p 1, r, k, rnd); }private int partition(int[] arr, int l, int r, Random rnd){// 生成 [l, r] 之间的随机索引int p l rnd.nextInt(r - l 1);swap(arr, l, p);// arr[l1...i-1] v; arr[j1...r] vint i l 1, j r;while(true){while(i j arr[i] arr[l])i ;while(j i arr[j] arr[l])j --;if(i j) break;swap(arr, i, j);i ;j --;}swap(arr, l, j);return j;}//数组指定索引两数交换private void swap(int[] arr, int i, int j){int t arr[i];arr[i] arr[j];arr[j] t;} }
http://www.w-s-a.com/news/137113/

相关文章:

  • 网站建设 税种秦皇岛哪有网站优化公司
  • 专业开发网站设计找人做网页需要多少钱
  • 手机购物网站 建站网站建设网站制作网站设计
  • 基于iview的网站开发模板小程序制作需要什么语言
  • 精美网站设计保定建行网站首页登录
  • 网站建设常见问题做网站保存什么格式最好
  • 营销型网站建设与网页设计网站建设 amp 找VX cp5173
  • 新网站该如何做网站优化呢儿童手工
  • 湖北现代城市建设集团网站搜索引擎优化的作用
  • 上海做网站吧开一家软件开发公司需要什么
  • 阿里巴巴网站建设改图片建设厅官方网站河南
  • 邓砚谷电子商务网站建设镇江网
  • 网站空间支持什么程序工作服款式
  • 网站单页品牌网站建设 蝌蚪5小
  • 怎么做外贸网站需注意哪些做电脑系统的网站
  • 网站建设介绍推广用语河南网站优化外包服务
  • 课程网站模板贵州省城乡与建设厅网站
  • 网站模板及源码谁家网站用户体验做的好
  • 做网站的技术要求搜索栏在wordpress菜单上位置
  • 如何给网站弄ftpwordpress怎么添加关键词描述
  • 成都工程建设信息网站金科网站建设
  • 传媒公司 网站开发厦门网站建设门户
  • 宿城区建设局网站做网站的绿色背景图
  • 网站空间托管合同 .doc网站开发团队 组建
  • 网站建设书本信息it运维服务
  • 四核网站建设设计网站流程
  • ui设计网站设计与网页制作视频教程wordpress插件漏洞利用
  • 网站建设公司排名前十做网站的最终目的
  • 选择网站开发公司的标准中国网站建设市场规模
  • 衣服网站建设策划书广州住房和城乡建设部网站