摘要:
针对求二叉树深度问题,一般有两种解法:BFS(广度优先搜索)和DFS(深度优先搜索)。 1.BFS:用队列存储每一层的结点。实现广度搜索。 2.DFS:用了递归思想。对于本题情况较多,较难理解。 JAVA /** * Definition for a binary tree node. * publ 阅读全文
摘要:
语法: JAVA遍历map:for(Map.Entry<Integer, Integer> entry : map.entrySet()) Python max函数: max(counts.keys(), key=counts.get), 其中counts.keys()是对象,key后面是函数。 本 阅读全文
摘要:
Python知识点: ord() 字符转ASCII码,chr() ASCII码转字符。 count = collections.Counter(s) Counte可以理解为一个计数器,可以传入一个list或者string。返回一个({:})。其中.most common(2) 表示出现次数最高的前两 阅读全文
摘要:
& 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 >> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术 阅读全文
摘要:
Map是一种key-value映射表。不存在重复的key。 经常用的方法有put(key,value),get(key),containsKey(key),可以通过for each遍历keyset(),entryset()。 给map赋值的方法可以参考该语句:map.put(c, map.getOr 阅读全文
摘要:
Set常用方法:add,remove,contains,size... HashSet无序,与HashMap的key作用相同。 TreeSet有序,与TreeMap的key作用相同。 两种解法: 1.遍历字符串S,判断S中的字符能否在J中找到对应的字符,如果找到res+1,跳出当前循环,再判断S中的 阅读全文
摘要:
使用二分查找法:前提条件为序列有序,经常在以下两种情况下使用 1.在[1,2,3,4,5,6,7]查找一个目标target数字。相比线性遍历时间复杂度O(n),二分查找时间复杂度为O(logn)。 2.在[0,0,0,1,1,1,1]查找元素1第一次出现的位置。 JAVA /* The isBadV 阅读全文
摘要:
本题最先想到的是暴力解法:但题目对访问矩阵元素的次数做了限制。因此暴力法会报错。 有以下三种思路: 1.每行线性搜索。行遍历。找到每行中第一个为元素1的位置,保存位置中最小的列,break退出当前行。(Wrong Answer) 2.每行二分搜索。对行进行二分查找,找到每行中第一个为元素1的位置,保 阅读全文
摘要:
本题主要用二分法的思想。因为题目要求时间复杂度为O(logn)。 1.首先用二分法找到旋转点,将数组分为两个递增子序列,再分别对两个子数组用二分法找到目标值。 2.再传统的二分法基础上多加一次判断,判断当前序列是否为递增序列。 JAVA class Solution { int []nums; in 阅读全文
摘要:
本题简单的动态规划 分三种情况: 1. 第一行元素:grid[i][j] += grid[i][j-1] 2.第一列元素:grid[i][j] += grid[i-1][j] 3.其他元素:grid[i][j] += min(grid[i-1][j], grid[i][j-1]) 返回矩阵最后一个元 阅读全文