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;
    }
     
  • 相关阅读:
    Linux使用Public Key方式远程登录
    Linux编译安装Mariadb数据库
    Centos7环境搭建lnmp环境
    浅谈Java中的System.gc()的工作原理
    Eclipse快捷键大全(转载)
    java中的参数传递——值传递、引用传递
    Visual Studio 2017 安装后无法创建c++或MFC项目
    ubuntu sendmail配置发送邮件
    ubuntu11.0静态IP地址配置
    cin与cout详解
  • 原文地址:https://www.cnblogs.com/bananaa/p/7364208.html
Copyright © 2011-2022 走看看