Leetcode 常用代码

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()]);

补充:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值