leetcode 算法题155 (简单036) 最小栈题目介绍设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)?-- 将元素 x 推入栈中。 pop()?-- 删除栈顶的元素。 top()?-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop() minStack.top(); --> 返回...
leetcode 算法题157 (简单037) 用 Read4 读取 N 个字符题目介绍会员试题 先写非会员的 等写完了 开个会员统一写会员题目....
leetcode 算法题160 (简单038) 相交链表题目介绍编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。示例输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。...
leetcode 算法题167 (简单039) 两数之和 II - 输入有序数组题目介绍给定一个已按照升序排列?的有序数组,找到两个数使得它们相加之和等于目标数。 函数应该返回这两个下标值 index1 和 index2,其中 index1?必须小于?index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 ...
leetcode 算法题168 (简单040) Excel表列名称题目介绍给定一个正整数,返回它在 Excel 表中相对应的列名称。 例如,1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB...示例输入: 1 输出: “A”输入: 28 输出: “AB”输入: 701 输出: “ZY”解法一/*** @param {number} n* @return {string}*/ var convertToTitle = function(n) {let dict = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';let title = '';while (n > 0) {n--;title = dict[n % 26] +...
如题,递归方法与迭代方法。 两个关键点:一:后序遍历的最后一项是树的根节点,这个根节点在中序遍历的中间把中序遍历分成左子树和右子树两部分;二:同一个树中序遍历和后序遍历包含元素相同(顺序不同),通过中序遍历的分隔点返回后序遍历,找到左右子树的后序遍历。 两点注意事项:一个是小心笔误;第二个是找到根节点后,到中序遍历中找到分隔点,这个分隔点同样是后序遍历的分隔点。举例来说: 中序遍历: 【左子树部分】(...
给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 12 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* T...
LeetCode 算法2.两数相加问题示例自解代码结果其他解法思路代码结果 问题 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807自解...
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3]nums2 = [2] 则中位数是 2.0示例 2: nums1 = [1, 2]nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/median-of-two-sorted-arraysdef findMedianSortedArrays(self, n...
class Solution(object):def numDistinct(self, s, t):""":type s: str:type t: str:rtype: int"""cnt=[0]*len(t)for si,sc in enumerate(s):lastc=""rep=0for ti in xrange(len(t)-1,-1,-1):tc=t[ti]if tc==sc:if ti==0:cnt[ti]+=1else:cnt[ti]+=cnt[ti-1]return cnt[-1]
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList();if(root == null){return res;}Queue<TreeNode> q = new LinkedList();//层次遍历,用队列实现q.offer(root); //将根节点入队TreeNode las...
70. Climbing Stairs This problem is a Fibonacci problem.F(n)=F(n-1)+F(n-2);Solving this problem by recursion ,we will do a lot of same recursion.Example:F(10)=F(9)+F(8);F(9)=F(8)+F(7);we calculate F(8) twice,when n is large,this will increase as a rate of ns exponent. So a more efficient way to solve this problem is from Bottom to Top.Calculate F(0) ,F(1);then F(2).........//F(n) = F(n-1) + F(n-2)...
https://www.jianshu.com/p/b086986969e6 DFS--需要借助stack实现 stack.push stack.pop BFS--需要借助队列queue stack-->先进后出, queue-->先进先出 LeetCode -- 100. Same Tree// Recursively bool isSameTree1(TreeNode* p, TreeNode* q) {if (p && q)return p->val==q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right);return p == q; }// BFS + queue bool isSameTree(TreeNode* p, TreeNode* q) {...
题目来自于leetcode 题目描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 示例2: 给定 nums = [0,0,1,1,1,2,2,3,3,4],函数...
class Solution(object):def isSameTree(self, p, q):if (p==None and q==None): return Trueif (p==None or q==None): return Falseif p.val!=q.val: return False""":type p: TreeNode:type q: TreeNode:rtype: bool"""return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right);