首页 > TAG信息列表 > Leetcoding
May LeetCoding Challenge20 之 二叉树中序遍历
因为题目为二叉搜索树找到第k大的数,所以对二叉搜索树中序遍历一定是有序的。 分为两种:递归 和 迭代(栈) JAVA /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} *May LeetCoding Challenge14 之 字典树
字典树结点结构: class Node{ boolean isWord; TreeMap<Character, Node> next; } 字典树的应用: 1.自动补全 2.拼写检查 3.IP 路由 4.预测文字 字典树的局限: 空间占用大。优化方法有压缩字典树。 字典树主要有如下三点性质: 1. 根节点不包含字符,除根节点意外每个节点只包含一个字符May LeetCoding Challenge13 之 单调栈
所谓单调栈,即栈中的元素单调递增 或 单调递减 本题用单调栈将数组维护成一个单调递增的集合。用k记录删除的元素个数。 特别注意三点: 1.如果num本身为递增序列,需要从从栈中弹出k个元素。 2.需要删除队头为0的元素,可以初始化一个为true的bool型变量,一旦开始的头部不等于0,bool型变May LeetCoding Challenge12 之 二分搜索
本题有两种解法, 第一种为暴力法,线性搜索。 但因为题目为递增序列中查找一个数,自然会有第二种方法:二分搜索法。 JAVA class Solution { public int singleNonDuplicate(int[] nums) { int res = nums[0]; for(int i = 1; i < nums.length; i += 2){May LeetCoding Challenge5 之 字符转ASCII码
Python知识点: ord() 字符转ASCII码,chr() ASCII码转字符。 count = collections.Counter(s) Counte可以理解为一个计数器,可以传入一个list或者string。返回一个({:})。其中.most common(2) 表示出现次数最高的前两个。 enumerate()是枚举,可以在循环中枚举数组中的下标和值。 JAVAMay LeetCoding Challenge 之 异或运算
& 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 >> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有30-Day Leetcoding Challenge Day29
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) {30-Day Leetcoding Challenge Day22
本题 1.暴力法会超时,时间复杂度为O(n3)。 2.用一个数组存储该位置的累加和。时间复杂度减少到O(n2)。 3.另一种暴力解法,让end从start开始,省去了一层循环。 4. public class Solution { public int subarraySum(int[] nums, int k) { int count = 0; for (int