![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
阿天想成为帅哥
just want to be a better man
展开
-
算法准备-7.3
算法准备-7.31. 从上到下打印二叉树题目:请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。思路:这题与普通的BFS最大的不同就是要判断奇偶层数,然后分别从左到右打印和从右到左打印,此题中我们利用双端队列的方法,在不同的层数分别从两端加入元素,实现顺序的不同代码:/** * Definition for a binary tree node. * public class Tre原创 2020-07-03 22:10:05 · 238 阅读 · 2 评论 -
算法准备-6.1
算法准备-6.1不回溯的染色问题描述:有 N 个花园,按从 1 到 N 标记。在每个花园中,你打算种下四种花之一。paths[i] = [x, y] 描述了花园 x 到花园 y 的双向路径。另外,没有花园有 3 条以上的路径可以进入或者离开。你需要为每个花园选择一种花,使得通过路径相连的任何两个花园中的花的种类互不相同。以数组形式返回选择的方案作为答案 answer,其中 answer[i] 为在第 (i+1) 个花园中种植的花的种类。花的种类用 1, 2, 3, 4 表示。保证存在答案原创 2020-06-01 22:53:19 · 280 阅读 · 0 评论 -
算法准备-5.29
算法准备-5.291. 打家劫舍描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路:此题考查动态规划算法,只有一间屋子时,只能偷一间,有两间屋子时,偷金额较大的那间,当数量大于2时,是否偷第k间屋子的标准在于第k间屋子的金额加上前k-2间屋子的原创 2020-05-29 15:36:44 · 235 阅读 · 0 评论 -
算法准备-5.12
算法准备-5.121. 克隆图描述:给你无向连通图中一个节点的引用,请你返回该图的 深拷贝(克隆)。简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表 是用于表示有限图的无序列表的集合。每个列表都描述了图中节点的邻居集。给定节点将始终是图中的第一个节点(值为 1)。你必须将 给定节点的拷贝 作为对克隆图的引用返回。思路:即通过dfs遍历图,递归的建立起node节点与原创 2020-05-12 20:09:30 · 143 阅读 · 0 评论 -
算法准备-5.7
算法准备-5.71. 二叉树中的最近公共节点描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)“。思路:采用递归的算法,当root为空或者等于p,q的时候返回root,定义left为对ro...原创 2020-05-07 18:08:49 · 112 阅读 · 0 评论 -
算法准备-5.4
算法准备-5.41. 根据二叉树的前序序列和中序序列确定二叉树描述:根据一棵树的前序遍历与中序遍历构造二叉树。思路:递归,前序序列的第一个元素为根节点,找出此节点在中序序列中的位置,左右两边分别为根结点的左右子树,分别对其进行构造即可。(注意边界条件)题解:/** * Definition for a binary tree node. * public class Tr...原创 2020-05-04 17:32:23 · 115 阅读 · 0 评论 -
算法准备-4.27
算法准备-4.271. 无重复字符的最长子串描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度思路:这题我看了评论区,主要采用的是滑动窗口法。那么什么是滑动窗口法呢?我们定义两个指针start和end,开始都指向第一个值,end向后移动,我们用一个哈希表存储遍历过的元素,key为对应字符,value则是该字符倒数第二次出现的位置加一,从那个为止开始目前未发现重复元素...原创 2020-04-27 19:12:51 · 142 阅读 · 0 评论 -
算法准备-4.26
算法准备-4.261.扑克牌中的顺子描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。思路:这题主要考察的是建模能力。我的思路是这样的,只要排除0以外的最大值与最小值之差小于5且除0以外数组中不存在重复的元素,则可以返回True题解:cl...原创 2020-04-26 18:50:20 · 173 阅读 · 0 评论 -
算法准备-4.23
算法准备-4.231. 两个链表的第一个公共节点描述:输入两个链表,找出它们的第一个公共节点思路:此题比较简单,先计算出两个链表的长度,较长的链表的遍历指针先走差值步,然后同时往后移动,直至相同题解:/** * Definition for singly-linked list. * public class ListNode { * int val; * ...原创 2020-04-23 17:46:22 · 150 阅读 · 0 评论 -
算法准备-4.21
算法准备-4.211. 第一个只出现一次的字符描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).思路:这是我第一次使用哈希表,首先遍历一遍字符数组,查看每个字符的个数,第二次遍历时找到第一个数量为1的字符即可题解:class Solution { pu...原创 2020-04-21 19:00:51 · 128 阅读 · 0 评论 -
算法准备-4.20
算法准备-4.201. 把数组排成最小的数描述:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。思路:这题实际上是对字符串进行排序,排序的规则是任两个数字对应的字符连接的顺序不同的结果较小的那个排在前面,按照快排的思想进行修改题解:class Solution { public String minNumber(int[] ...原创 2020-04-20 19:11:11 · 129 阅读 · 2 评论 -
算法准备-4.17
算法准备-4.171. 完全平方数描述:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少思路:动态规划动态规划的核心将问题分解成小问题后,在计算规模较大的问题时,能够用到规模较小的问题的解;我们建立一个整型数组res,res[i]表示的是n=i时的结果,计算第i+1时无非是比较当前的res[i...原创 2020-04-17 15:43:36 · 114 阅读 · 0 评论 -
算法准备-4.15
算法准备-4.151. 数组中超过一半的数字(摩尔投票法)描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字未解思路:此题采用分治算法,在原数组中超过一半的数字,在等分的左右两数组中至少有一个中也超过了一半,而且因为是超过一半,所以两个等分数组中都存在此元素新学思路:摩尔投票法:摩尔投票法基于当一个数的重复次数超过数组长度的一半,每次将两个不相同的元素删除,最终...原创 2020-04-15 16:16:57 · 125 阅读 · 0 评论 -
二叉搜索树
二叉搜索树定义:二叉树中任意节点的右子树的所有节点值都比此节点大,左子树中所有节点的值都比此节点小,每个节点存在指向其父节点的指针操作:查找:递归:if x==null or k==x.key return xif k<x.key return TREESEARCH(x.left,k)else return TREESEARCH(x.right,...原创 2020-04-14 16:37:09 · 97 阅读 · 0 评论 -
二叉树的常见算法
二叉树的常见算法二叉树的前序遍历描述:(1)访问根节点;(2)递归遍历左子树;(3)递归遍历右子树;题解://递归前序遍历import java.util.ArrayList;public void preTraversal(Node node){ ArrayList<Node> res=new ArrayList<>(); if(...原创 2020-04-14 16:33:04 · 480 阅读 · 0 评论 -
算法准备-4.14
算法准备-4.14复杂链表的复制描述:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null思路:分三步,第一步复制每个节点使其位于原节点的后面;第二步建立random指针;第三步恢复链表题解:/*// Definition for a No...原创 2020-04-14 15:49:22 · 97 阅读 · 0 评论 -
算法准备-4.12
算法准备-4.121. 矩阵中的路径描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s...原创 2020-04-12 17:46:36 · 135 阅读 · 0 评论 -
算法准备-4.11
算法准备-4.111.二叉树中和为某一值的路径思路:首先对二叉树进行先序遍历,若当前节点为null,则直接返回,若为叶节点且路径和为sum,则把当前路径添加到结果中,再递归其左右子节点描述:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。解法:/** * Definition for a bi...原创 2020-04-11 22:09:28 · 86 阅读 · 0 评论 -
字符串转换整数-Java
字符串转换整数(正则处理)描述:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符...原创 2020-04-09 22:04:20 · 166 阅读 · 0 评论