2020年06月22日
数组
-
二分查找while用<还是<=,很难判断。题34用<。
int right = nums.length;
时,用while (left < right)
,同时注意,需要right = mid
,此时区间为[left, right),因为是左闭右开区间,所以right=mid也取不到mid。以上是对于搜索左右侧边界的二分查找。 -
优秀代码参考
ID | 题目大致内容 | 解题思想 | 注意点 |
---|---|---|---|
34 | 在排序数组中查找元素的第一个和最后一个位置 | 使用左侧边界的二分搜索,找到target的左边界,使用右侧边界的二分搜索,找到target的右边界 | |
48 | 旋转图像 | 先把第i行和第i列对调,然后将第i列与倒数第i列对调。 | |
54 | 螺旋矩阵 | 定义四个边界,left,right,top,bottom。对于最外面一圈,从左到右,从上到下,从右到左,从下到上遍历,加入结果。然后left++, right–, top++, bottom–。重复,直到不满足条件left <= right && top <= bottom |
常用方法积累
类名 | 方法名 | 解释 |
---|---|---|
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. |