LeetCode
文章平均质量分 60
Neon Zhou
主要记录学习经验,若有错误,请不吝赐教。
展开
-
剑指offer67:字符串中的整数
题目描述首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,...原创 2021-08-13 13:27:28 · 150 阅读 · 0 评论 -
剑指offer68-I: 二叉搜索树最小公共祖先
剑指offer68-I: 二叉搜索树最小公共祖先 题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]来源:力扣(LeetCode)链接:https://le...原创 2021-08-13 13:26:38 · 134 阅读 · 0 评论 -
剑指offer68-II: 二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-cha-shu-de-z原创 2021-08-13 13:27:03 · 135 阅读 · 0 评论 -
剑指offer 04: 二维数组中的查找
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目分析在右上角看,矩阵可以看作一棵二叉搜索树BST。原创 2021-08-12 10:15:35 · 76 阅读 · 0 评论 -
程序员面试金典 01.07. 旋转矩阵
题目描述给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?模拟图解想起一个被困雪山的鬼故事,故事内容和图解也很像,1、2、3、4四位主人公被困在雪山木屋里,需要有一个人醒着守夜等待救援。守夜完成的4,去1的位置叫醒1,让1换岗守夜;守夜完成的1,去2的位置叫醒2,让2换岗守夜;守夜完成的2,去3的位置叫醒3,让3换岗守夜;守夜完成的3,去4的位置叫醒“4”,让4换岗守夜;按照这样的规则,守夜轮回了原创 2021-08-12 10:15:03 · 180 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
题目描述方法1:原链表复制拆解解题思路一次遍历: 复制各节点二次遍历:构造相同random引用三次遍历:拆解成两个链表代码/*// Definition for a Node.class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.rando原创 2021-08-12 10:14:27 · 55 阅读 · 0 评论 -
LeetCode 93: 复原IP地址
题目描述给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。来源:力扣(LeetCode)链接:原创 2021-08-12 10:13:54 · 173 阅读 · 0 评论 -
LeetCode 337: 打家劫舍III
题目描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber-iii原创 2021-08-12 10:12:26 · 120 阅读 · 0 评论 -
LeetCode 377: 组合总数IV
题目描述给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combination-sum-iv著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目分析此题和爬楼梯很相似,用nums中的元素,组成target - num。这种组合有多少原创 2021-08-12 10:11:35 · 97 阅读 · 0 评论 -
LeetCode 494: 目标和
题目描述给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/target-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目分析原创 2021-08-12 10:10:49 · 106 阅读 · 0 评论 -
LeetCode 153: 寻找旋转排序数组中的最小值
题目描述1.题目分析数组可以按旋转点为分界线分为左右两部分,如:[4,5,6,0,1,2,3] = [4,5,6] + [0,1,2,3]数组A:[4,5,6]; 数组B:[0,1,2,3]· 注意本题为各不相同于是我们便可以分两种情况讨论:** ①mid指在数组A,②mid指在数组B。**1.1 情况①: A B [4, 5, 6] + [0,1,2,3] ↑ ↑ ↑原创 2021-08-12 10:10:13 · 232 阅读 · 0 评论 -
LeetCode33: 搜索旋转排序数组
1. 题目描述2. 题目分析这道题与那道【LeetCode 153. 寻找旋转排序数组】中的最小值的区别在于,找最小值只可能在B数组中去寻找,right一定指向B中元素,而本体为搜索元素,right和left都有可能在A或者在B中,于是分类便复杂了很多。三个指针的相对关系如何确定呢,我们需要先定下一个,然后确定其他两个。2.1 情况①: left在数组A中时,即nums[left] > nums[right]情况2.1.1 nums[left] <= target <= num原创 2021-08-12 10:09:06 · 125 阅读 · 0 评论