Java 常见基础面试题总结 Ⅱ
50d587fd195ba3e2fcf7fcd8dbdf856b7a1e0369497308f6f2f9f7a9948ca4821b00bf18b5d4ab40612758f7b8f3ed7224d0375054926de18f21e120146693b48ab5ebbb0756d294ab46ad57b970859f8eacfab6ba3b926b56ac78e621579059c0faf0515f7e422fa1d8780a18a1ab9ef8f49e3d8071a145d6a6a80577a9fa0914e3e69f3a244f454e9fe684d4e726a4d9e6bdb842311e3c42cd3d3b6454120b67e1a94098846889c7f5ab32da99490ca86d782fec53160b3e762ed05bf0f831e008d3451a8b224c2415661bb00b047e0d49dbdfa7ad11db979b128e52ff6877d8d8b9138c24ccb2c9cc66f6b2d9bf6fd84e6ed34d0bb7ebd ...
Java 常见基础面试题总结 Ⅰ
50d587fd195ba3e2fcf7fcd8dbdf856b7a1e0369497308f6f2f9f7a9948ca482b2b52b04fecc99df157850ffd3bb129faff40c53f1fd5f5813f77a3bda4af9d958e10c0663e072a875cfaa79a673265e82085d44043aa0eac39bfb55927fe89d2d54ff254f3b4aa23d72e7591626ef98a4ed435422f867834e6f1d23d66345acc07ba9b372174d08ba6edcaf991bbec8efdcc0a8d88fa60b2ec4f76355aa74dfcdebfbf3545306fe8ff6722e840f7bca27892343bc5c7daefeefed72ce8b1256bea16b6ff1123f904abe70d8480bdc18acfd97e93e39f30fa6b23942e725543a2ea158a9915e32cb0e3693e97da2bd42d17bb7c156ec5d1fc ...
算法通关-第 4 关:站不住的栈
青铜挑战—手撕栈
内容大纲
数组栈
链表栈
数组栈123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354public class AStack<T> { // 栈结构 private T[] stack; // 栈顶指针 private int top; //构造函数 public AStack() { // 以下行会导致编译时错误 // private T[] array = new T[10]; 泛型擦除 this.stack = (T[]) new Object[10]; } // 判空 public boolean isEmpty() { return top == 0; } // 取栈顶元素 public T peek() { ...
算法通关-第 3 关:爱不起的数组与双指针思想
青铜挑战—爱不起的数组
内容大纲
理解数组存储元素的特征
实现在数组首部、中间和尾部插入元素
实现在数组首部、中间和尾部删除元素
实现单调数组算法
实现数组合并问题
参考资料
常见数据结构1.别说你懂数组-这些问题经常翻车
数组基本操作
数组创建和初始化
12345int[] arr = new int[10];int[] arr = new int[] {0,1,2,3,4};int[] arr = {0,1,2,3,4};
查找元素
123456789101112131415/** * 查找元素 * * @param size 已经存放的元素个数 * @param key 待查找的元素 */public int find(int[] arr, int size, int key) { for (int i = 0; i < size; i++) { if (arr[i] == key) { return i; } & ...
算法通关-第 2 关:两天写了三次的链表反转
青铜挑战—手写链表反转
内容大纲
掌握带虚拟头节点的链表反转
掌握不带虚拟节点的链表反转
题目
【LeetCode 206】:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
参考资料
链表3.透彻理解链表反转以及拓展问题链表6:大厂如何考链表反转
建立虚拟头节点辅助反转
123456789101112131415161718192021// 带有虚拟节点的反转public ListNode reverseList(ListNode head) { // 接上虚拟节点解决问题 ListNode L = new ListNode(-1); L.next = head; // 断链操作,为头插法做铺垫 L.next = null; // 当前指针 p ListNode p = head; while (p != null) { // 哨兵指针 q ListNode q = p.next; // 保存后继 p.next = L.next; ...
算法通关-第 1 关:原来链表这么有用
青铜挑战—零基础手撕链表
内容预览
Java 构造链表
链表增删改查
链表头插法和尾插法
【注意】如果没有特殊说明,本教程题目中的链表均不带虚拟节点!
参考资料
1.Java 是如何构造链表的
2.一道题透彻理解链表是什么
3.闭着眼都要会—链表增删改查
4.大厂都是如何如何考链表的
5.手写小红书考过的的链表求并集算法
单链表单链表包含若干节点,每个节点具有指向后继结点的 next 指针,最后一个节点的 next 指向 NULL。
正确示范
错误示范
虚拟节点和头节点
节点和头节点
链表中每个节点都由值和指向下一个节点的地址组成,对于单链表,第一个元素节点称为头节点
虚拟节点
即 dummyNode,其 next 指针指向 head
如果获取 head 节点,或者从方法里返回时,使用 dummyNode.next
dummyNode 的 val 不会被使用,通常初始化成 0 或 -1
创建链表
JVM 如何构建链表的?
JVM 下栈区存放实际对象的引用地址,堆区存放创建的对象:
1234public class Course { Te ...









