2020年06月23日
数组
- 优秀代码参考
ID | 题目大致内容 | 解题思想 | 注意点 |
---|---|---|---|
59 | 螺旋矩阵 II | 使用和题54的思想就行只不过是在每次遍历时赋值即可,不过需要注意的是,遍历时的条件需要加上num<=n*n, 即赋值的数不能超过给定值n的平方 | |
73 | 矩阵置零 | 遍历原始矩阵,如果发现如果某个元素 cell[i][j] 为 0,我们将第 i 行和第 j 列的所有非零元素设成很大的负虚拟值(比如说 -1000000),最后,我们便利整个矩阵将所有等于虚拟值的元素设为 0。 | |
74 | 搜索二维矩阵 | 二分查找。中间序号: pivot_idx = (left + right) / 2。该序号对应于原矩阵中的 row = pivot_idx / n行 ,col = pivot_idx % n 列, 由此可以拿到中间元素pivot_element。该元素将虚数组分为两部分。进一步查找即可 | |
80 | 删除排序数组中的重复项 II | 和题26类似,就是注意指针运动条件,因为是一个元素若出现2次以上,则只保留2次,其余删除,后面元素往前移,所以判断条件为int index = k - 1; if(nums[i] != nums[index-k+1]){ index++;nums[index] = nums[i];} | |
81 | 搜索旋转排序数组 II | 和题33一致,需要注意的是当前数组有重复元素,所以需要加个判断,当重复元素时跳过if (nums[lo] == nums[mid]) {lo++;continue;} |
常用方法积累
类名 | 方法名 | 解释 |
---|---|---|
ArrayList | indexOf(value) | 返回value值对应的索引值, |
ArrayList | copyOfRange(T[ ] original,int from,int to) | 将原数组original,从下标from开始复制,复制到上标to,生成一个新的数组。 |
ArrayList | ans.get(i).append© | 名为ans的ArrayList对象拿出索引i处的元素,并在其后追加一个字符或数字c。注意不是[index] |
HashMap | getOrDefault(Object key, V defaultValue) | 当Map集合中有这个key时,就使用对应的value值,如果没有就使用默认值defaultValue |
Map | entrySet() | 获取所有key和value,遍历的时候用,例子:for (Map.Entry<String, String> entry : map.entrySet()) {System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());} |
Integer | toBinaryString(num) | 返回num整数的二进制字符串表达 |
Integer | toHexString(num) | 返回num整数的十六进制字符串表达 |
Integer | bitCount(num) | 返回num整数的二进制表达式中1的个数 |
Character | toLowerCase© | 返回c的字母小写形式 |
Character | toUpperCase© | 返回c的字母大写形式 |
Character | isLetter© | 判断c是否为字母 |
String | format(patten,num) | 格式化字符串,比如format("%d:%02d",1,2),输出结果为1:02 |
String | subString(start,end) | 含start,不含end |
StringBuilder | deleteCharAt(index | 删除索引所在处的字符 |
Arrays | fill(Object[] a, Object val) | 再数组a中把所有值都填充为val |
Arrays | equals(s1,s2) | 比较两个数组元素是否相同 |
Arrays | asList(s1,…,sn) | 将一个数组s1,…,sn转换为 List.注意,数组元素不能是原生数据类型(int,long等),要用其包装类Integer等 |
Arrays | set(index,element) | 修改列表中的值。(index指定下标,element指定要修改后元素的值) |
System | arrayCopy(Object src, int srcPos, Object dest, int destPos, int length) | Object src : 原数组; int srcPos:从元数据的起始位置开始; Object dest:目标数组; int destPos:目标数组的开始起始位置; int length:要copy的数组的长度 |
TreeSet | floor(E e) | 返回在这个集合中小于或者等于给定元素的最大元素,如果不存在这样的元素,返回null. |
TreeSet | ceiling(E e) | 返回在这个集合中大于或者等于给定元素的最小元素,如果不存在这样的元素,返回null. |