Leetcode 常用代码
作者自用
一、定义部分
常用最小值定义,范围较Integer广:
double res = -Double.MAX_VALUE;
常用栈的定义:
Deque<> stk = new LinkedList<>();
常用队列的定义:
List<> result = new ArrayList<>();
常用集合的定义:
Set<> set = new HashSet<>();
常用Map定义:
Map<xx, xx> frequency = new HashMap<xx, xx>();
常用可变字符串的定义:
StringBuilder sb = new StringBuilder();
随机数的定义:
Random random = new Random();
return random.nextInt(size);
返回 0到size范围内的随机数,包含0,不包含size
自动排序的栈:
PriorityQueue<Integer> queMin;
PriorityQueue<Integer> queMax;
queMin = new PriorityQueue<Integer>((a, b) -> (b - a)); //从小到大排序 栈顶最大
queMax = new PriorityQueue<Integer>((a, b) -> (a - b)); //从大到小排序
链表的定义:
新建链表进行操作时,常用
ListNode dummyHead = new ListNode(-1);
ListNode temp = dummyHead;
后续对temp操作
补充:
二、常用方法部分
1.字符串和字符数组相关方法
char[] StringtoChar = str.toCharArray();
String SortedString = new String(StringtoChar);
***获取字符串指定位置的字符***
char c = str.charAt(i);
***获取字符串指定字符的位置***
str.indexOf(char c)
找不到为-1
***字符串取出***
str.substring(begin,end)
包含begin,不包含end
int 和 string 转换
Integer.valueOf()
String.valueOf()
Character.isDigit(s.charAt(i))
2.StringBuilder常用方法
StringBuilder sb = new StringBuilder(str);
sb.append(xx);
sb.deleteCharAt(sb.length()-1); 删除末尾
sb.toString();
sb.setCharAt(5, ' '); 替换
sb.delete(6, 14); 删除
与String转换
StringBuilder sb = new StringBuilder(str);
String s = sb.toString();
3.Map常用方法
map.getOrDefault(key, 0);
// 获取键和值
for (Map.Entry<String, String> entry : map.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
System.out.println("键: " + k + ", 值: " + v);
}
// 获取所有键
Set<> keys = map.keySet();
// 获取所有值
Collection<> values = map.values();
//遍历,以「创作者」为键,「播放量最大的视频id」和「总播放量」为联合值。
HashMap<String, IdCnt> person2cnt = new HashMap<>();
class IdCnt {
public int id;
public long cnt;
public IdCnt(int id, long cnt) {
this.id = id;
this.cnt = cnt;
}
}
person2cnt.put(creators[i], new IdCnt(i, views[i]));
4.Arrays类的常用方法
int[] arr = new int[5];
Arrays.fill(arr,4);//给所有值赋值4
Arrays.toString(arr);//数组打印**
Arrays.sort(arr);
Arrays.equals(); //数组比较**
Arrays.binarySearch(); //数组查找**
二分查找法找指定元素的索引值(下标)
Arrays.copyOfRange(arr,1,3);//数组截取**
实现高效率的数组之间的复制
//将原数组(str1)从0到往后复制str1.length个长度到目标数组(str2)中,
//从目标数组索引为0的位置开始放置
System.arraycopy(str1,0,str2,0,str1.length);
5.Stack常用方法
初始化
Stack stack=new Stack();
判断Stack是否为空
isEmpty()
添加元素
push(E item)
获取栈顶值,元素不出栈(栈为空时抛异常)
peek()
是否存在obj
search(Object obj)
移除栈顶
pop()
stack 作为 list,具备 list 常用方法,如:
//获取stack长度
size()
//下标处添加
add(int index, E element)
//添加集合
addAll(Collection<? extends E> c)
//移除对象
remove(Object obj)
//根据下标移除对象
remove(int index)
//清空
clear()
6.自定义排序
***一维数组排序***
Integer a[]=new Integer[]{34,4,45,12,92,9};
Arrays.sort(a, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
***二维数组排序***
Arrays.sort(prerequisites,new Comparator<int[]>() {
public int compare(int[] o1, int[] o2) {
return o1[0]-o2[0];
}
});
如果第一列相同,就根据第二列排序
Arrays.sort(ts_id,new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1];
}
return o1[0]-o2[0];
}
});
7.List常用方法
删除指定元素;
List<Integer> list = new ArrayList<>();
list.remove(Integer.valueOf(值));
Integer i;
i.intValue()
***list和数组转换***
String[] arr = new String[]{"s1","s2","s3"};
List<String> list = Arrays.asList(arr);
List<String> list = new ArrayList<String>();
list.add("s1");
list.add("s2");
list.add("s3");
String[] arr = list.toArray(new String[list.size()]);
补充: