zoukankan      html  css  js  c++  java
  • lettcode笔记--Valid Parentheses

    20.Valid Parentheses

    Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    用栈来实现,参考:http://blog.csdn.net/feliciafay/article/details/17408469

    22. Generate Parentheses

    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    [
      "((()))",
      "(()())",
      "(())()",
      "()(())",
      "()()()"
    ]
    解答:用二叉树递归方法来实现,参考: http://blog.csdn.net/fly_yr/article/details/48754087
    只有当右边括号数目小于左边括号数目时,才可以添加右括号。
    class Solution {
    private:
        void generateParenthesis1(vector<string>&v,string s,int l,int r){
            if(l==0&&r==0)
                {
                    v.push_back(s);
                    return;
                }
            if(l>0)
                generateParenthesis1(v,s+"(",l-1,r);
            if(r>0&&l<r)
                generateParenthesis1(v,s+")",l,r-1);
        }
    
    public:
        vector<string> generateParenthesis(int n) {
            if(n==0)
                return vector<string>();
    
            vector<string> v;
            generateParenthesis1(v,"",n,n);
            return v;
        }
    
    };

      

    89.Gray code 

    The gray code is a binary numeral system where two successive values differ in only one bit.

    Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0.

    For example, given n = 2, return [0,1,3,2]. Its gray code sequence is:

    00 - 0
    01 - 1
    11 - 3
    10 - 2
    (看不太懂。。)
    参考:http://www.cnblogs.com/jdneo/p/5228780.html

    35. Search Insert Position
    终于有一道会做的题目了好开心!!

    Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

    You may assume no duplicates in the array.

    Here are few examples.
    [1,3,5,6], 5 → 2
    [1,3,5,6], 2 → 1
    [1,3,5,6], 7 → 4
    [1,3,5,6], 0 → 0

     在一个排好序的数组中查找某个值,存在则返回对应的value,不存在则返回能够插入的数组中的下标,其实就是找到第一个大于等于目标值的下标,用二分法查找。

    class Solution {
    public:
        int searchInsert(vector<int>& nums, int target) {
            int low=0;
            int high=nums.size()-1;
            int mid=0;
            while(low<=high){
                mid=low+(high-low)/2;
                if(target<=nums[mid])
                    high=mid-1;
                else
                    low=mid+1;
            }
             return low;
        }   
    };
    

      

     14. Longest Common Prefix--找最长前缀。这里string[j]=0为什么就可以截断了呀?

    Write a function to find the longest common prefix string amongst an array of strings.

    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    class Solution {
    public:
        string longestCommonPrefix(vector<string>& strs) {
            if(strs.size()==0) return "";
            char* str=(char*)malloc(sizeof(char)*(strs[0].size()+1));
            for(int i=0;i<strs[0].size();i++){
                str[i]=strs[0][i];
            }
            str[strs[0].size()]=0;
            for(int i=1;i<strs.size();i++){
                int j=0;
                while(str[j]&&strs[i][j]&&str[j]==strs[i][j])
                    j++;
                str[j]=0;
            }
            return string(str);
        }
    };
    
    int main()
    {
        Solution sl;
    
        vector<string> s;
        s.push_back("abcd");
        s.push_back("abdff");
        string str=sl.longestCommonPrefix(s);
        if(str=="")
            str="无解";
        cout<<"this is the end of "+str<<endl;
        system("pause");
        return 0;
    }
     
  • 相关阅读:
    使用 Eclipse 平台共享代码
    给定一个整数数组,其中元素的取值范围为0到10000,求其中出现次数最多的数
    学习
    eclipse优化
    约瑟夫环
    propedit插件
    OData 11 入门:实现一个简单的OData服务
    OData 14 OData语法(上)
    CLR via C# 读书笔记 54 在使用非托管资源情况下的GC
    面试:等车时间
  • 原文地址:https://www.cnblogs.com/bananaa/p/7364208.html
Copyright © 2011-2022 走看看