原创公众号:
bigsai
专注于Java、数据结构与算法,一起进大厂不迷路!
关注后回复进群即可加入力扣打卡群,欢迎划水。近期打卡:
LeetCode打卡 52八皇后Ⅱ&53最大子序和&54螺旋矩阵LeetCode 55跳跃游戏&56合并区间&57插入区间跟我打卡
LeetCode 58最后一个单词长度&59螺旋矩阵Ⅱ&60排列序列跟我打卡
LeetCode 61旋转链表&62不同路径&63不同路径 II
最小路径和
简单的动态规划,只能向右或者向下,所以可以使用动态规划动态的找到最小路径和,先对第一行和第一列特殊处理,然后顺序遍历数组的时候状态转移方程为:
其中dp[i][j]意为第i行第j列的最小路径和。
具体代码为:
有效数字
验证给定的字符串是否可以解释为十进制数字。
例如:
更新于 2015-02-10:
C++函数的形式已经更新了。如果你仍然看见你的函数接收 const char * 类型的参数,请点击重载按钮重置你的代码。
分析
这题其实挺麻烦的,我也是根据样例不停的测试然后才最终得到正确的结果。这些数字和符号有一定的规律和要求。 我的分析就是将数字分成三块 e前,e,e后。而每个数字可能是符号数字小数点等组成需要满足一定规律。符号可以没有,但是数字必须有! 具体可以参考这张图:
实现代码为:
还有这种方法就是有限状态机(DFA)解决,具体解释看题解吧:
加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]
提示:
1 <= digits.length <= 100
0 <= digits[i] <= 9
分析:简单题,只需要本本分分模拟即可,将数组最后一位加一,如果产生进位一直向前判断是否还需要进位。有一个需要注意的地方就是如果结束第0位也需要进位那么需要重新创建数组扩容赋值返回。
实现代码:
原创不易,bigsai请你帮两件事帮忙一下:
- 点赞、在看、分享支持一下, 您的肯定是我创作的源源动力。
- 微信搜索「bigsai」,关注我的公众号
记得关注、咱们下次再见!