【LeetCode 手撕算法】(细节知识点总结)

一、Array类List类

1、排序Arrays.sort(nums); Array要加s

2、ArrayList<Integer> maxlist = new ArrayList<>(); ArrayList里面两个大写

3、数组固定不变用 .length,ArrayList可变用 .size()

4、ArrayList 访问下标用 .get(i) ,数组才可以直接arri

5、Math.min() 和 Math.max() 可以直接求两 数值int、long、float 或 double的较大较小值

6、添加: 将元素以List形式存进res列表,res.add()

7、Arrays.equals(hashS,hashP) 比较两hash串是否相等,用于判断是否为异位词

比较地址内容用 a.equals(b) 比较数组内容用Arrays.equals(a,b)

8、Arrays.fill(ans,1); 将ans全部设置为1,Arrays不忘s

二、返回值类

1、return new int { l,r} 为新建一个int数列,值为l,r 结果为 l ,r

2、return new int 0 指返回长度为0的int数列。不能直接返回 null,否则会出现 NullPointerException错误

三、定义类

1、int i=0,j=0; 需要分开定义,不能是int i,j=0;

2、开头为void,则不需要返回值;

3、如果定义为 int nums,则直接返回 return nums;

4、List<List<Integer>> res = new ArrayList<>()

存多组结果的二维表 例:\[1,2, 3,4,5]

5、Set<Character> win=new HashSet<>() 定义集合类

6、int minprice=Integer.MAX_VALUE;//默认最大值,正无穷

四、string类char类

1、char\[\]ch= s.toCharArray(); //把string变成char

2、win.contains(xxx) 判断win里是否包含xxx,拼写别忘了s

3、String类型用.length()算长度,数组用.length,集合用 .size()

4、获取元素用charAt( ) , 截取用substring( i, j )

五、数组类

1、注意二维数组排序写法格式 intervals,(arr1,arr2)->arr10-arr20

2、 ans.add ( new int { left,right } 意思:新建含left,right的数组,动态存入ans

六、链表类

1、比较两节点是否相等,用per.val 和slow.val

2、新建ListNode类集合Set <ListNode> visited=new HashSet<ListNode>()

3、 **set . add(xxx)**为true即集合未出现过(添加的同时返回true),为false即出现过。

4、遍历类的要用其他节点来接头节点,头节点保持不动 方便之后再使用

5、二维链表操作 .get() .add() 、 .get() .get()

七、队列类(BFS广度优先使用、是否有环)

1、Queue<int\[\]> queue = new LinkedList<>();

2、get.(x).add(y)根据x层存y数据

3、queue.offer(1) 入队--加入队尾

4、queue.poll() 出队--去掉队头

5、queue.peek() 看队头

6、queue.size() 队列元素个数

7、queue.isEmpty() 判断是否为空

八、操作汇总

数组用 .length 字符串用 .length() 集合用size.() ;

添加: List用add( ) , StringBuilder用append.( ) ;

删除: List用remove( ) , StringBuilder用deleteCharAt.( ) ;

要求O(log n)查找,用二分查找,左右指针求mid

九、栈

自动装箱:Integer有可能为null,可以存进栈里;取出来时如果用int来接,会报错int不能为null

相关推荐
Pin_Qing11 小时前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
jyOverQ12 小时前
从零开始学 RocketMQ(四):集群部署、消息存储与高可用【保姆级教程】
java·rocketmq·java-rocketmq
Cccp.12312 小时前
【leetcode】(十四)从暴力递归到动态规划
数据结构·算法·leetcode·动态规划
小裕哥略帅12 小时前
行级数据权限控制@DataPermission
java·开发语言
ManageEngineITSM12 小时前
ITSM系统如何与企业微信、钉钉、飞书集成?提升工单处理效率的方法
java·大数据·开发语言·钉钉·企业微信·变更管理
旖旎夜光12 小时前
LeetCode 215: 数组中的第K个最大元素 (快速排序) —— 题解
c++·学习·算法·leetcode·力控
技术胖12 小时前
奎爷巡演 AIGC 视频教程 文档
算法
德彪稳坐倒骑驴13 小时前
Leetcode力扣刷题记录与题解
算法·leetcode·职场和发展
lzhdim19 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ1 天前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法