leetcode198-213.House Robber
House Robber I
1 | You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, |
假设你现在是一个小偷,想要一整条街上的人家。你不能连着偷两家因为这样会触发警报系统。现在有一个nums数组存放着每一家中的可偷金额,问可以偷的最大金额为多少?
1 | You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, |
假设你现在是一个小偷,想要一整条街上的人家。你不能连着偷两家因为这样会触发警报系统。现在有一个nums数组存放着每一家中的可偷金额,问可以偷的最大金额为多少?
1 | Implement the following operations of a queue using stacks. |
使用队列来模拟实现一个栈。
栈是指先进后出的数据结构,而队列则是先进先出的数据结构。
假设我们分别往栈和队列中顺序输入[1,2,3],那么栈的输出是[3,2,1],而队列的输出的[1,2,3]。
队列的API包括在队列尾插入数据,输出队列头的数据,查看队列的长度,队列是否为空。
那么我们现在看一下如何通过队列来实现栈的操作。
1 | Implement a basic calculator to evaluate a simple expression string. |
实现一个简单的计算器,这个计算器可以计算以String为输入的中序表达式。这个中序表达式包含(),+,-和数字。题目中也给出了例子。
还有一个比较特殊的情况为(3)-(4)-(5) = -6
1 | Implement the following operations of a queue using stacks. |
通过队列实现一个栈的功能。栈的api为push(压入栈顶),pop(出栈),peek(栈顶元素),empty(栈是否为空)。这道题和之前的使用栈实现队列功能是类似的,可以参考我的这篇博客。
1 | Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. |
现在有一棵搜索二叉树,这个二叉树的特点是左子树的节点一定小于根节点,而右子树的节点一定大于根节点。现在提供这棵树的根节点,并且输入两个节点,问这两个节点的最低共同父节点是谁?
最低共同父节点是指两个节点在沿父节点向上爬升时遇到的第一个共同父节点,同时它也允许父节点就是其本身,比如在上图中2和4的最低共同父节点就是2
1 | Given a range [m, n] where 0 <= m <= n <= 2147483647, |
给一个闭区间[m,n],对该闭区间的所有数字进行与(and)运算。
与预算是指 1 and 1 = 0, 1 and 0 = 0, 0 and 1 = 0, 0 and 0 = 0。
这里都是以二进制为基础进行与运算。在计算机底层所有的十进制数都是以二进制数进行存储的。写这道题目之前需要先去了解十进制转二进制以及未操作符>>,>>>和<<。