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

深圳做微信商城网站做国外进口衣服的网站好

深圳做微信商城网站,做国外进口衣服的网站好,查找邮箱注册过的网站,有什么彩票网站做代理好点数组是一种连续存储线性结构#xff0c;元素类型相同#xff0c;大小相等#xff0c;数组是多维的#xff0c;通过使用整型索引值来访问他们的元素#xff0c;数组尺寸不能改变。 知识点数组与矩阵相关题目 # 知识点 数组的优点: 存取速度快 数组的缺点: 事先必须知道… 数组是一种连续存储线性结构元素类型相同大小相等数组是多维的通过使用整型索引值来访问他们的元素数组尺寸不能改变。 知识点数组与矩阵相关题目 # 知识点 数组的优点: 存取速度快 数组的缺点: 事先必须知道数组的长度插入删除元素很慢空间通常是有限制的需要大块连续的内存块插入删除元素的效率很低 # 数组与矩阵相关题目 把数组中的 0 移到末尾 283. Move Zeroes (Easy)在新窗口打开 For example, given nums [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].public void moveZeroes(int[] nums) {int idx 0;for (int num : nums) {if (num ! 0) {nums[idx] num;}}while (idx nums.length) {nums[idx] 0;} }改变矩阵维度 566. Reshape the Matrix (Easy)在新窗口打开 Input: nums [[1,2],[3,4]] r 1, c 4Output: [[1,2,3,4]]Explanation: The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.public int[][] matrixReshape(int[][] nums, int r, int c) {int m nums.length, n nums[0].length;if (m * n ! r * c) {return nums;}int[][] reshapedNums new int[r][c];int index 0;for (int i 0; i r; i) {for (int j 0; j c; j) {reshapedNums[i][j] nums[index / n][index % n];index;}}return reshapedNums; }找出数组中最长的连续 1 485. Max Consecutive Ones (Easy)在新窗口打开 public int findMaxConsecutiveOnes(int[] nums) {int max 0, cur 0;for (int x : nums) {cur x 0 ? 0 : cur 1;max Math.max(max, cur);}return max; }有序矩阵查找 240. Search a 2D Matrix II (Medium)在新窗口打开 [[ 1, 5, 9],[10, 11, 13],[12, 13, 15] ]public boolean searchMatrix(int[][] matrix, int target) {if (matrix null || matrix.length 0 || matrix[0].length 0) return false;int m matrix.length, n matrix[0].length;int row 0, col n - 1;while (row m col 0) {if (target matrix[row][col]) return true;else if (target matrix[row][col]) col--;else row;}return false; }有序矩阵的 Kth Element 378. Kth Smallest Element in a Sorted Matrix ((Medium))在新窗口打开 matrix [[ 1, 5, 9],[10, 11, 13],[12, 13, 15] ], k 8,return 13.解题参考: Share my thoughts and Clean Java Code在新窗口打开 二分查找解法: public int kthSmallest(int[][] matrix, int k) {int m matrix.length, n matrix[0].length;int lo matrix[0][0], hi matrix[m - 1][n - 1];while (lo hi) {int mid lo (hi - lo) / 2;int cnt 0;for (int i 0; i m; i) {for (int j 0; j n matrix[i][j] mid; j) {cnt;}}if (cnt k) lo mid 1;else hi mid - 1;}return lo; }堆解法: public int kthSmallest(int[][] matrix, int k) {int m matrix.length, n matrix[0].length;PriorityQueueTuple pq new PriorityQueueTuple();for(int j 0; j n; j) pq.offer(new Tuple(0, j, matrix[0][j]));for(int i 0; i k - 1; i) { // 小根堆去掉 k - 1 个堆顶元素此时堆顶元素就是第 k 的数Tuple t pq.poll();if(t.x m - 1) continue;pq.offer(new Tuple(t.x 1, t.y, matrix[t.x 1][t.y]));}return pq.poll().val; }class Tuple implements ComparableTuple {int x, y, val;public Tuple(int x, int y, int val) {this.x x; this.y y; this.val val;}Overridepublic int compareTo(Tuple that) {return this.val - that.val;} }一个数组元素在 [1, n] 之间其中一个数被替换为另一个数找出重复的数和丢失的数 645. Set Mismatch (Easy)在新窗口打开 Input: nums [1,2,2,4] Output: [2,3]Input: nums [1,2,2,4] Output: [2,3]最直接的方法是先对数组进行排序这种方法时间复杂度为 O(NlogN)。本题可以以 O(N) 的时间复杂度、O(1) 空间复杂度来求解。 主要思想是通过交换数组元素使得数组上的元素在正确的位置上。 public int[] findErrorNums(int[] nums) {for (int i 0; i nums.length; i) {while (nums[i] ! i 1 nums[nums[i] - 1] ! nums[i]) {swap(nums, i, nums[i] - 1);}}for (int i 0; i nums.length; i) {if (nums[i] ! i 1) {return new int[]{nums[i], i 1};}}return null; }private void swap(int[] nums, int i, int j) {int tmp nums[i];nums[i] nums[j];nums[j] tmp; }类似题目: 448. Find All Numbers Disappeared in an Array (Easy)在新窗口打开寻找所有丢失的元素442. Find All Duplicates in an Array (Medium)在新窗口打开寻找所有重复的元素。 找出数组中重复的数数组值在 [1, n] 之间 287. Find the Duplicate Number (Medium)在新窗口打开 要求不能修改数组也不能使用额外的空间。 二分查找解法: public int findDuplicate(int[] nums) {int l 1, h nums.length - 1;while (l h) {int mid l (h - l) / 2;int cnt 0;for (int i 0; i nums.length; i) {if (nums[i] mid) cnt;}if (cnt mid) h mid - 1;else l mid 1;}return l; }双指针解法类似于有环链表中找出环的入口: public int findDuplicate(int[] nums) {int slow nums[0], fast nums[nums[0]];while (slow ! fast) {slow nums[slow];fast nums[nums[fast]];}fast 0;while (slow ! fast) {slow nums[slow];fast nums[fast];}return slow; }数组相邻差值的个数 667. Beautiful Arrangement II (Medium)在新窗口打开 Input: n 3, k 2 Output: [1, 3, 2] Explanation: The [1, 3, 2] has three different positive integers ranging from 1 to 3, and the [2, 1] has exactly 2 distinct integers: 1 and 2.题目描述: 数组元素为 1~n 的整数要求构建数组使得相邻元素的差值不相同的个数为 k。 让前 k1 个元素构建出 k 个不相同的差值序列为: 1 k1 2 k 3 k-1 ... k/2 k/21. public int[] constructArray(int n, int k) {int[] ret new int[n];ret[0] 1;for (int i 1, interval k; i k; i, interval--) {ret[i] i % 2 1 ? ret[i - 1] interval : ret[i - 1] - interval;}for (int i k 1; i n; i) {ret[i] i 1;}return ret; }数组的度 697. Degree of an Array (Easy)在新窗口打开 Input: [1,2,2,3,1,4,2] Output: 6题目描述: 数组的度定义为元素出现的最高频率例如上面的数组度为 3。要求找到一个最小的子数组这个子数组的度和原数组一样。 public int findShortestSubArray(int[] nums) {MapInteger, Integer numsCnt new HashMap();MapInteger, Integer numsLastIndex new HashMap();MapInteger, Integer numsFirstIndex new HashMap();for (int i 0; i nums.length; i) {int num nums[i];numsCnt.put(num, numsCnt.getOrDefault(num, 0) 1);numsLastIndex.put(num, i);if (!numsFirstIndex.containsKey(num)) {numsFirstIndex.put(num, i);}}int maxCnt 0;for (int num : nums) {maxCnt Math.max(maxCnt, numsCnt.get(num));}int ret nums.length;for (int i 0; i nums.length; i) {int num nums[i];int cnt numsCnt.get(num);if (cnt ! maxCnt) continue;ret Math.min(ret, numsLastIndex.get(num) - numsFirstIndex.get(num) 1);}return ret; }对角元素相等的矩阵 766. Toeplitz Matrix (Easy)在新窗口打开 1234 5123 9512In the above grid, the diagonals are [9], [5, 5], [1, 1, 1], [2, 2, 2], [3, 3], [4], and in each diagonal all elements are the same, so the answer is True.public boolean isToeplitzMatrix(int[][] matrix) {for (int i 0; i matrix[0].length; i) {if (!check(matrix, matrix[0][i], 0, i)) {return false;}}for (int i 0; i matrix.length; i) {if (!check(matrix, matrix[i][0], i, 0)) {return false;}}return true; }private boolean check(int[][] matrix, int expectValue, int row, int col) {if (row matrix.length || col matrix[0].length) {return true;}if (matrix[row][col] ! expectValue) {return false;}return check(matrix, expectValue, row 1, col 1); }嵌套数组 565. Array Nesting (Medium)在新窗口打开 Input: A [5,4,0,3,1,6,2] Output: 4 Explanation: A[0] 5, A[1] 4, A[2] 0, A[3] 3, A[4] 1, A[5] 6, A[6] 2.One of the longest S[K]: S[0] {A[0], A[5], A[6], A[2]} {5, 6, 2, 0}题目描述: S[i] 表示一个集合集合的第一个元素是 A[i]第二个元素是 A[A[i]]如此嵌套下去。求最大的 S[i]。 public int arrayNesting(int[] nums) {int max 0;for (int i 0; i nums.length; i) {int cnt 0;for (int j i; nums[j] ! -1; ) {cnt;int t nums[j];nums[j] -1; // 标记该位置已经被访问j t;}max Math.max(max, cnt);}return max; }分隔数组 769. Max Chunks To Make Sorted (Medium)在新窗口打开 Input: arr [1,0,2,3,4] Output: 4 Explanation: We can split into two chunks, such as [1, 0], [2, 3, 4]. However, splitting into [1, 0], [2], [3], [4] is the highest number of chunks possible.题目描述: 分隔数组使得对每部分排序后数组就为有序。 public int maxChunksToSorted(int[] arr) {if (arr null) return 0;int ret 0;int right arr[0];for (int i 0; i arr.length; i) {right Math.max(right, arr[i]);if (right i) ret;}return ret; }
http://www.hkea.cn/news/14563357/

相关文章:

  • 金科网站建设宁波网络营销推广哪家好
  • 福田网站-建设深圳信科企业网站建设太原网站建设
  • 网站建设得花多少钱住房城乡建设部网站主页
  • 做pc端网站市场装修公司十大排名北京哪家好
  • 采购网站建设wordpress制作主题
  • 白山做网站注册公司需要啥资料
  • 网站建设大型沈阳哪个公司可以做网站
  • 网站做百度口碑什么是网络营销型网站
  • 网站快速优化排名推荐关键词优化一般收费价格
  • 怎么做网站推广电话如何设计一个高端网站简洁大方大气
  • 网站设计与制作说明网站广告位一般多少钱
  • 如何搭建平台运营体系重庆seo薪酬水平
  • 需要做网站建设和推广注册网站显示lp或设备超限怎么办
  • 建设个人网站ip农产品电子商务网站建设
  • 网站售后维护十大it教育培训机构排名
  • 个人工商注册查询网站专业微信网站
  • 大气的网站首页做网站界面的软件
  • 写资料的网站有哪些内容标签云小工具 wordpress nofollow
  • wordpress客户端APP企业seo解决方案
  • 长春网站建设翻译深圳做电子工厂的网站
  • 网站推广 方法js网页制作代码大全
  • 吕梁建设机械网站网站建设责任分工
  • 网站开发亿玛酷1专注电子商务师证报考官网
  • 哪个网站可以做问卷调查网站怎么弄实名制认证
  • 哪能建设网站网站备案去哪备案
  • 兰州新站点seo代理在哪里买域名
  • 坪山网站建设多少钱网站版块模板
  • 网站备案号是什么50款软件app免费下载大全
  • 网站php源码长沙网站建设价格
  • 岳阳网站建设制作drupal与wordpress