Heiaipika

Thinking will not overcome fear but action will.

LeetCode-二叉树

前中后遍历(深度优先遍历) ● 递归法: ⅰ. 确定递归函数的参数和返回值 ⅱ. 确定终止条件 ⅲ. 确定单层递归的条件 ● 迭代法 :用栈的思想 //递归:前序遍历 class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Intege...

LeetCode-栈与队列

栈实现队列 //入队栈和出队栈 class MyQueue { Deque <Integer>inStack; Deque <Integer>outStack; public MyQueue() { inStack=new LinkedList<Integer>(); outStack=new LinkedList&...

LeetCode-字符串

反转字符串 class Solution { public void reverseString(char[] s) { int l=0,r=s.length-1; while(l<r){ char tem=s[l]; s[l]=s[r]; s[r]=tem; ...

LeetCode-哈希

哈希前置知识 哈希:快速判断一个元素是否出现集合里(牺牲空间换取时间) ● 哈希函数:把传入的key映射到符号表的索引上 ● 哈希碰撞:多个key映射到相同索引上(处理碰撞方式:拉链法和线性探测法) 数据结构: ● 数组:大小有限(空间大但哈希值少) ● set (集合):不允许重复元素的集合(用数组造成空间浪费时考虑set) ● map(映射):键值对的几何 有效的字母异位词 //数组是简...

LeetCode-链表

链表前置知识 链表:通过指针串联在一起的线性结构,每个节点是数据域和指针域(存放指向下一个节点的指针),最后的节点指针域指向null(空指针) ● 链表的入口节点:链表的头结点即head ● 链表类型:单链表,双链表,循环链表 移除链表元素 class Solution { public ListNode removeElements(ListNode head, int val) ...

LeetCode-数组

数组前置知识 数组:存放在连续内存空间上的相同类型数据的集合 ● 数组下标从0开始的 ● 数组内存空间的地址是连续的 由于连续的内存空间的地址,在增删元素时要移动其他元素的地址 二分查找 ● 有序数组 ● 无重复元素 //闭区间 class Solution { public int search(int[] nums, int target) { int l=0,r=nums....