美文网首页100天代码挑战
100天代码挑战:DAY11

100天代码挑战:DAY11

作者: 共醉明月Nessa | 来源:发表于2018-09-22 22:34 被阅读0次

LeetCode 120. 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
例如,给定三角形:

[
     [**2**],
    [**3**,4],
   [6,**5**,7],
  [4,**1**,8,3]
]

自顶向下的最小路径和为 11(即,**2 **+ 3 + **5 **+ 1 = 11)。

说明:
如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。

我的答案:

class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
        int ans;
        vector<int> path,temp;
        path.push_back(triangle[0][0]);
        for(int i=1; i<triangle.size(); i++){
            temp.push_back(triangle[i][0] + path[0]);
            for(int j=1; j<triangle[i].size()-1; j++){
                temp.push_back(min(path[j-1], path[j])+triangle[i][j]);
            }
            temp.push_back(triangle[i][triangle[i].size()-1] + path[path.size()-1]);
            path = temp;
            temp.clear();
        }
        ans = path[0];
        for(int i=1; i<path.size(); i++){
            if(path[i]<ans) ans = path[i];
        }
        return ans;
    }
};

LeetCode 96. 不同的二叉搜索树

给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?

示例:
输入: 3
输出: 5
解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:

   1         3     3      2      1
    \       /     /      / \      \
     3     2     1      1   3      2
    /     /       \                 \
   2     1         2                 3

我的答案:

class Solution {
public:
    //46min, with help
    int numTrees(int n) {
        int sum = 0;
        vector<int> res;
        res.push_back(1);
        for(int i=1; i<=n; i++){
            sum = 0;
            for(int j=0; j<i; j++){
                sum += res[j] * res[i-j-1];
            }
            res.push_back(sum);
        }
        return res[n];
    }
};

LeetCode 62. 不同路径

一个机器人位于一个 *m x n *网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?

image

例如,上图是一个7 x 3 的网格。有多少可能的路径?

说明:m和n的值均不超过 100。

示例 1:
输入: m = 3, n = 2
输出: 3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。

  1. 向右 -> 向右 -> 向下
  2. 向右 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向右

示例 2:
输入: m = 7, n = 3
输出: 28

我的答案:

class Solution {
public:
    //10min
    int uniquePaths(int m, int n) {
        int map[m][n];
        for(int i=0; i<m; i++) map[i][0] = 1;
        for(int i=0; i<n; i++) map[0][i] = 1;
        for(int i=1; i<m; i++){
            for(int j=1; j<n; j++){
                map[i][j] = map[i][j-1] + map[i-1][j];
            }
        }
        return map[m-1][n-1];
    }
};

LeetCode 647. 回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。

示例 1:
输入: "abc"
输出: 3
解释: 三个回文子串: "a", "b", "c".

示例 2:
输入: "aaa"
输出: 6
说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".

注意:

  1. 输入的字符串长度不会超过1000。

我的答案:

class Solution {
public:
    int countSubstrings(string s) {
        string str = "#";
        int ans = 0;
        for(int i=0; i<s.length(); i++){
            str = str + s[i] + "#";
        }
        for(int i=1; i<str.length(); i++){
            int len=0;
            while(str[i-len] == str[i+len] && i>len && i+len<str.length()){
                if(str[i-len] != '#') ans++;
                len++;
            }
        }
        return ans;
    }
};

相关文章

  • 自律给我自由—Day011

    【叶子姑娘的自律100天挑战 Day11】 2019.01.25 Day11/100 【早起】昨晚有点失眠,早上晚...

  • 100天代码挑战:DAY11

    LeetCode 120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相...

  • 只有在人后死磕自己,才能在人前光彩夺目

    挑战自己:连续365天,每日一篇双语日记,Day11 Tuesday, October 17, 2017 Over...

  • 与人斗乐在其中

    Day11/21 【21天阅读挑战】 【书籍名称】 《我不是教你诈2》 作者:[美]刘墉 【阅读感受】 好人之中有...

  • 叶子姑娘自律100天挑战Day11

    #叶子姑娘自律100天挑战Day 11# 2019.1.24 Day11 #目标1# 今天有点懒了,没有运动,莫名...

  • 《小学问》

    Day11/21 阅读北滘+21天阅读挑战 【书籍名称】 《小学问》 ——解决你的 7 种人生焦虑 出品:马东 【...

  • 码字挑战 Day11

    早上醒来,发现今天好像不怎么冷,甚至有一点暖和的感觉。奶奶中午吃饭的时候,还说太热了,要把夹衣脱掉。 对秋天总是感...

  • 自律挑战day11

    *2019.1.22日结day11 【晨练】day22,阿斯汤加75min 【英语】day12,百词斩10min ...

  • 实习挑战DAY11

    今早为周五游园会采购物资,坐标:洪城大市场。 中午买完东西回来,吃完饭急急忙忙又回到自己的岗位上。下午一起和龙哥做...

  • Day13 - tableViewCell 动画显示

    效果图 代码结合了day11的学习内容 1、UI布局 在ViewController加入导航栏 然后拖入table...

网友评论

    本文标题:100天代码挑战:DAY11

    本文链接:https://www.haomeiwen.com/subject/hwzxoftx.html