Leetcode常用函数集合

这篇博客详细介绍了在解决LeetCode问题时常用的数据结构和函数操作,包括字符串和字符的转换、数组与List之间的转换、字符串与数字的转换、堆的使用,以及Stack、TreeSet、LinkedList等数据结构的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二维数组的表示方法:
1:List<List>
2:List<int[]>Day 7

键值对表示: Day 8 leetcode13
1:Map
2:利用string ,int双数组表示(利用下标I建立对应关系)

字符串和字符

字符串转字符1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。
2. 使用String.toCharArray()(返回值为char[])可以得到将包含整个String的char数组。这样我们就能够使用从0开始的位置索引来

字符转字符串:
String s = String.valueOf(‘c’);

数组和LIST

数组转List:

1:字符串String数组可以直接转化
String[] pathArr ;
List pathList = Arrays.asList(pathArr);
2:int 数组必须如下转化:或者定义为Integer num[]=new Integer
int[] src = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Integer[] is = ArrayUtils.toObject(src);
List asList = Arrays.asList(is);
3:
List asList = Arrays.asList(num[0],num[1]);

list转数组
List<int[]> result=new LinkedList<>();
result.toArray(new int [0][]); Day 7

字符串和数字

字符串转数字: Integer.valueOf(v2[i]) 会自动去掉所有前缀 “00012”——12

快捷数字转数组:result.add(new int[]{left, right}) Day 7
快捷数字转List:result.add(Arrays.asList(nums[i],nums[low],nums[high])

数组中截取部分数字作为数组:int preorderLeft[]=Arrays.copyOfRange(preorder, 1, i+1);

排序:Day 7
Arrays.sort(Elemtype)
Arrays.sort(Elemtype,int front,int rear)
加了Comparator
例子:
int[][] intervals;
Arrays.sort(intervals,(a,b)->a[0]-b[0]);
理解为将intervals下每一个一维数组看做比较量,比较其a[0]即为第一个元素

反转:可以是数组,甚至是List<List>对内部List 进行反转。注意返回值是void(不用返回)
Collections.reverse(list);

二分详解:day 10 leetcode14
首先标准格式牢记:
三个点容易混淆
1:low <= high
2:low = middle + 1
3:high = middle - 1
while (low <= high) {
middle = (low + high) / 2;
if (isCommonPrefix(strs, middle))
low = middle + 1;
else
high = middle - 1;
}
拓展理解:
1:当给定字符序列时,二叉查找树唯一,即所有数字的查找路径已经确定。
例子:当字符序列时 1 2 3 4 5 6 7时,二叉查找树已经确定
在这里插入图片描述
当查找4<x<5时,会比较4-6-5序列
当查找5<x<6时,会比较4-6-5序列 其中序列值即Mid的值

2:虽然查找序列确定,但是low,high的值没有确定。
但是
若查找成功,则结束情况为low=high=mid=value
若查找失败,则结束情况low=high+1。且
在比较路径上一定存在两种情况
第一种low=high-1——>mid=low
if(a[mid]<value) 则low=mid+1=high mid=low=high
if(a[mid]>value) low =mid+1——low>high 失败
if(a[mid]<value) high=mid-1——low>high 失败
if(a[mid]>value) 则high=mid-1 ———low>high 失败
第二种:low=high
if(a[mid]<value) low=mid+1 low>high
if(a[mid]>value) high=mid-11 low>high

3:注意当确定low, high时,说明i<low和i>high的情况已经失败,删除考虑列表。
可能存在的情况是low<=i<=high

4:注意类型题目
如果是查找数组中某一个值==key【常规二分】 返回mid
如果是查找数组中奇异点,返回a[left]或者a[right]

5:若未能找到(n>=2)
若value>nums【high不动,low一直右移位】
一定有low=nums.length;
若value<nums【low不动,high一直左移位】
一定有high=-1;
若value位于nums值之间
一定有nums[high]<value<nums[low]

stack

push( num) //入栈
pop() //栈顶元素出栈
empty() //判定栈是否为空
peek() //获取栈顶元素
search(num) //判端元素num是否在栈中,如果在返回1,不在返回-1

Treeset

TreeSet set = new TreeSet<>();
boolean add(E object)
Object clone()
boolean contains(Object object)
boolean isEmpty()
E floor(E e)
E ceiling(E e)
boolean remove(Object object)
lower、floor、ceiling 和 higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回 null。

String

char charAt(值)
char toCharArray();
int indexOf(“字符”)
String[] split(“字符”) 
trim(); 删除前后空格
String substring(int beginIndex,int endIndex)
 主要两种:删除字符串 str=str.substring(a,b)
  获得删除的部分 return str.substring(a,b)
  return str.substring(a):删除前a个字符串
boolean contains(String)
boolean startsWith(String)
boolean endsWith(String)
String replace(char old,char new)

LinkedList[注意List,ArrayList不同]

boolean add(Object element) addAll(List)
Object remove(int index)
Object get(int index)
public int size()
subList(fromIndex, toIndex)
public int indexOf(Object o),查找指定元素从前往后第一次出现的索引;
public int indexOf(Object o),查找指定元素从前往后第一次出现的索引;
注意,List也遵循先进先出,拥有队列性质 【leetcode17计算器】

Integer和Int转换:
Integer A=Integer.valueOf(a);
int a=A.intValue();

Integer[]和int[]转化
int[] arr2 = Arrays.stream(integers1).mapToInt(Integer::valueOf).toArray();
Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);

	// int[] 转 List<Integer>
    List<Integer> list1 = Arrays.stream(data).boxed().collect(Collectors.toList());
    // int[] 转 Integer[]
    Integer[] integers1 = Arrays.stream(data).boxed().toArray(Integer[]::new);
    // 前两步同上,此时是Stream<Integer>。
    // 然后使用Stream的toArray,传入IntFunction<A[]> generator。
    // 这样就可以返回Integer数组。
    // 不然默认是Object[]。

    // List<Integer> 转 Integer[]
    Integer[] integers2 = list1.toArray(new Integer[0]);
    // List<Integer> 转 int[]
    int[] arr1 = list1.stream().mapToInt(Integer::valueOf).toArray();
    // Integer[] 转 List<Integer>
    List<Integer> list2 = Arrays.asList(integers1);
    // String[] 转 List<String>
    List<String> list3 = Arrays.asList(strings1);
    // List<String> 转 String[]
    String[] strings2 = list3.toArray(new String[0]);

Collections

void Collections.reverse(List list):反转

void Collections.shuffle(List list),随机排序

void Collections.sort(List list),按自然排序的升序排序

void Collections.sort(List list, Comparator c);定制排序,由Comparator控制排序逻辑

void Collections.swap(List list, int i , int j),交换两个索引位置的元素

void Collections.rotate(List list, int distance),旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面。

PriorityQueue priorityQueue = new PriorityQueue<>(k + 1, (a, b) -> (a - b));
需要设置长度和Lambda表达式说明大小根堆
add,poll,peek

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值