算法
文章平均质量分 56
Nick-Yin
这个作者很懒,什么都没留下…
展开
-
树的遍历(前、中、后、层次遍历,递归+迭代)
代码】树的遍历(前、中、后、层次遍历,递归+迭代)原创 2022-07-25 22:41:02 · 550 阅读 · 1 评论 -
[剑指offer刷题] - 数组中重复的数字、在排序数组中查找数字、0~n-1中缺失的数字 (二分专场)
题目[题目及部分解法来自LeeCode]题目一:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0solution one : 利用HashSet,由于hashSet原创 2022-05-21 11:12:23 · 265 阅读 · 0 评论 -
[剑指offer刷题56 - Ⅱ] - 数组中数字出现的次数
题目[题目及部分解法来自LeeCode]solution one:可以利用哈希表来完成本题!class Solution { public int singleNumber(int[] nums) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int num : nums){ map.put( num, map.getOrD原创 2022-04-19 15:46:28 · 171 阅读 · 0 评论 -
[剑指offer刷题56 - I] - 数组中数字出现的次数
题目[题目及部分题解来自LeeCode]solution one注意题目要求时间复杂度 O(N) ,空间复杂度 O(1) ,因此首先排除 暴力法 和 哈希表统计法 。但如果没有要求时间、空间复杂度,就可以用着两者方法,下面给出使用哈希表代码:class Solution { public int[] singleNumbers(int[] nums) { Map<Integer,Integer> set = new HashMap<Integer, Int原创 2022-04-16 23:39:37 · 791 阅读 · 0 评论 -
[剑指offer刷题13] - 机器人的运动范围
题目[题目及部分解法来源于LeeCode]地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?solution one:呐呐呐,有木有感觉到原创 2022-04-11 10:09:50 · 133 阅读 · 0 评论 -
[剑指offer 刷题52] - 两个链表的第一个公共节点
题目[题目及部分解法来源于力扣]输入两个链表,找出它们的第一个公共节点。solution one:先遍历两个链表获得二者长度,如果二者长度不等,且二者长度相差n,则前n个节点一定不存在相交的可能。所以,从n+1个节点进行比较,如果指向相同则返回,无相交则返回null。 public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if(headA == null || headB == nul原创 2022-04-09 11:45:01 · 674 阅读 · 0 评论 -
[剑指offer刷题12] - 矩阵中的路径
题目[题目及部分解法来自LeeCode]solution one:主要思路:先找到起始点,之后利用深度优先遍历 + 回溯来进行查找!在搜索过程中遇到不可能和目标字符串匹配成功的情况(如:此矩阵元素和目标字符不同、此元素已被访问),则应立即返回,称之为可行性剪枝。![在这里插入图片描述](https://img-blog.csdnimg.cn/c31479a940c340d8a6bc36311f86b789.png?x-oss-process=image/watermark,type_d3F5LXp原创 2022-04-08 22:00:10 · 207 阅读 · 0 评论 -
[剑指offer刷题35] - 复杂链表的复制
题目[题目及部分解法来自力扣]请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。solution one:![在这里插入图片描述](https://img-blog.csdnimg.cn/99282bc40996499ea81d326d20974807.png?x-oss-process=image/watermark,type_d3F5LXplbmhl原创 2022-04-04 21:03:38 · 93 阅读 · 0 评论 -
[剑指offer刷题11] - 旋转数组的最小数字
本题是一个进阶,有重复数字的旋转数组和无重复数字的旋转数组。原创 2022-04-03 16:36:10 · 462 阅读 · 0 评论 -
[剑指offer刷题10 - I] - 爬楼梯、青蛙跳台阶
题目:[题目及部分解法来自力扣] 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?(1 <= n <= 45) 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。(0 <= n <= 100) solution one:使用动态规划来...原创 2022-04-03 10:24:30 · 688 阅读 · 0 评论 -
[剑指offer刷题10] - 斐波那契数列
递归、非递归、矩阵快速幂原创 2022-03-31 23:07:53 · 638 阅读 · 0 评论 -
[剑指offer刷题09] - 用两个栈实现队列 / 包含min函数的栈
题目[题目及部分解法来自力扣]题目一:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )solution one:两个栈实现队列:栈是FILO原则,而队列是FIFO原则。所以两个栈实现队列,先push进stack_in,之后再stack_out中pop,这样就达到了FIFO的效果。但是如果stack_out为空而stack_i原创 2022-03-31 10:28:32 · 125 阅读 · 0 评论 -
[剑指offer刷题07(1)] - 从中序与后序遍历序列构造二叉树
题目[题目及部分题解来源与力扣]给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。solution one:与[剑指offer刷题07](https://blog.csdn.net/qq_36657788/article/details/123843827)思路相似,首先我们要了解什么是中序遍历和后序遍历。 - 中序遍历的原创 2022-03-30 14:21:59 · 490 阅读 · 0 评论 -
[剑指offer刷题07] - 从前序与中序遍历序列构造二叉树
题目[题目及部分解法来源于力扣]给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。solution one : 首先要了解什么是先序遍历,中序遍历! - 先序遍历:先遍历根节点;随后递归地遍历左子树;最后递归地遍历右子树。 - 后序遍历:先递归地遍历左子树;随后遍历根节点;原创 2022-03-30 13:52:07 · 1391 阅读 · 0 评论 -
[剑指offer刷题06] - 从尾到头打印链表
题目[题目及部分解法来自LeeCode]输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。solution one: 先找出链表长度,之后依次向数组末尾添加元素【这也是数组逆置的一种方法!】 public static int[] reversePrint1(ListNode head) { if(head == null) { int[] arr = new int[0]; return ar原创 2022-03-27 22:55:22 · 1166 阅读 · 0 评论 -
[剑指offer刷题05] - 替换空格
题目[题目及部分解法来自力扣]请实现一个函数,把字符串 s 中的每个空格替换成"%20"。solution one :java自带很多对于字符串操作的函数可供使用,如charAt()等。但相比solution one, 还是solution two 的方法比较哇塞。 public static String replaceSpace(String s) { int len = s.length(); char[] str = new char[len * 3]原创 2022-03-27 15:43:16 · 90 阅读 · 0 评论 -
[剑指offer刷题04] - 二维数组中的查找
相比solution two, solution three要简便的多,且代码看起来更整洁。所以有时候从反向的角度看待同一个问题,会有不同的结果,还是要学会让自己多角度看待问题。原创 2022-03-26 15:29:56 · 1128 阅读 · 0 评论 -
[剑指offer刷题03] - 数组中重复的数字
题目(题目及解法参考来源与力扣!)原创 2022-03-25 23:21:35 · 487 阅读 · 0 评论 -
基础算法练习43道(详细讲解版,随时更新)
本算法是基础算法,既然是基础算法,既可以用java语言编写,也可以用C等其它语言编写,所以我建议想学C语言的同学,可以去看我的博客 《C语言各章节干货汇总、考研知识点归纳》,之后也可以用C语言编写,想用C练习的小伙伴,只需要将方法体中输入输出语句改为C语言输入输出语句即可,另外有些改不了的我会给出C算法的代码。原创 2020-02-20 19:54:05 · 5263 阅读 · 1 评论