给定一个字符串,里面只有(){}[]这六种字符,判断,是否它们能够匹配。
栈即可解决该问题。
class Solution {
public:
bool IsMatch(char left,char right) {
if(left == '{' && right == '}' ||
left == '[' && right == ']' ||
left == '(' &a……
二叉树从根开始每个结点存放一个0~9的数字,计算从根开始到叶节点生成的所有数字之和。从根开始搜索,到一个叶节点,将string转换加到结果里面就行。
class Solution {
public:
int ConvertNumber(string &tmpNumber) {
int number = 0;
for(int i = 0;i < tmpNumber.length();i++) {
……
计算二叉树的最短路径,一层一层的算。我用的应该算是搜索加剪枝,但是如果有宽度搜索,或许时间更快,但是需要额外的空间。
class Solution {
public:
int min;
void MoveTo(TreeNode *node,int steps) {
if(node->left == NULL && node->right == NULL) {
if(steps < mi……
Populating Next Right Pointers in Each Node的变形:
http://blog.sina.com.cn/s/blog_672f71fc0101ohqp.html
但是貌似自己没有使用常数空间
class Solution {
public:
void connect(TreeLinkNode *root) {
// Note: The Solution object is instantiated only once and is reused by each test case.
……
leetcode_60题目的变形
http://blog.sina.com.cn/s/blog_672f71fc0101pgf6.html
这次,array允许重复的。我适当改了下代码判断的情况。
仍然是o(logn)
class Solution {
public:
bool searchStep(int A[],int target,int left,int right)
{
if(left > right)
return false;
int……
给定一个sorted 的array但是 需要做个调转:比如: 0 1 2 3 4 5 6 7 8 9 某个调转之后:7 8 9 0 1 2 3 4 5 6
输入target,如果array中存在target返回下标,否则,返回-1。
欧克,傻瓜都能想到o(n)的方法,
有没有更快的?o(logn)?二分?二分查找变形一下就行:
class Solution {
public:
int ans;
void searchSt……
简单搜索题,但是题目交代不是很清楚,也可能是自己的英文不大好,就是说给n,全集为1,2,3…n。从里面选k个组成子集,列举所有子集。
class Solution {
public:
void combineStep(int n,int step,int k,vector<int>&item,vector<vector<int>>&ans,int count)
{
if(step &……
判断一个链表中是否有环,并且输出进入环中的节点。如果没有,输出NULL。
判断一个链表是否成环,且不开辟额外的空间,在之前的博客中一提到:
http://blog.sina.com.cn/s/blog_672f71fc0101odsf.html
如何输出环中节点的入口节点?
如果能计算出环中节点个数k,再根据从后向前删除节点的思路:
http://blog.sina.com.cn/……
给一个单向链表,输入一个n,删掉从后往前第n个元素。尽可能一次遍历单链表。
两个指针,使他们的差距刚好为n,当后面一个刚好指向NULL的时候,删掉前一个即可。
附上代码:
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
ListNode *before = NULL;
ListNode *p1 =……
模拟题,但是做起来好费劲啊。
一次AC:
class Solution {
public:
int removeDuplicates(int A[], int n) {
if(n == 0)
return n;
int now;
int count = 0;
int len = n;
for(int i = 0;i < len;i++)
{
if(count == 0 || now != A[……