zoukankan      html  css  js  c++  java
  • LeetCode() Different Ways to Add Parentheses

    分治的思想:1分2治3合并解

    这题最难的就是要想到 在运算符上分开。分治和递归是双胞胎啊!想不到啊想不到,不能再放纵自己了,眼睛干涩。

    vector<int> diffWaysToCompute(string input) {
            vector<int> result;
            for (int i = 0; i < input.size(); i++) {
                char ch = input[i];
                if (ch == '+' || ch == '-' || ch == '*') {
                    vector<int> lv = diffWaysToCompute(input.substr(0, i));
                    vector<int> rv = diffWaysToCompute(input.substr(i+1));
                    for (auto x : lv) {
                        for (auto y : rv) {
                            if (ch == '+') {
                                result.push_back(x+y);
                            } else if (ch == '*') {
                                result.push_back(x*y);
                            } else if (ch == '-') {
                                result.push_back(x-y);
                            }
                        }
                    }
                }
            }
            if (result.empty()) {
                result.push_back(atoi(input.c_str()));
            }
            return result;
    

      

    vector<int> diffWaysToCompute(string input) {
            vector<int> ans;
            bool pureNum=true;
            for (int i=0; i<input.length(); i++) 
                if (input[i]<'0' || input[i]>'9') {
                    pureNum=false;
                    vector<int> L=diffWaysToCompute(input.substr(0, i)), R=diffWaysToCompute(input.substr(i+1, input.length()-i-1));
                    for (auto l : L)
                        for (auto r : R)
                            if (c=='+') ans.push_back(l+r);
                            else if (c=='-') ans.push_back(l-r);
                            else if (c=='*') ans.push_back(l*r);
                }
    
            if (pureNum)
                ans.push_back(atoi(input.c_str()));
            return ans;
        }
    

    这是一个二叉树啊,递归就是解决二叉树的。应该形成固定思维啊暂时。

  • 相关阅读:
    二进制安全的一些基础知识
    栈溢出笔记-第五天
    一次基于白盒的渗透测试
    栈溢出笔记-第四天
    Hadoop1-认识Hadoop大数据处理架构
    Kubernetes1-K8s的简单介绍
    Docker1 架构原理及简单使用
    了解使用wireshark抓包工具
    Linux系统设置开机自动运行脚本的方法
    Mariadb/Mysql 主主复制架构
  • 原文地址:https://www.cnblogs.com/yanqi110/p/4981742.html
Copyright © 2011-2022 走看看