原创公众号:bigsai 专注于Java、数据结构与算法,一起进大厂不迷路!
关注后回复进群即可加入力扣打卡群,欢迎划水。近期打卡:
LeetCode打卡 52八皇后Ⅱ&53最大子序和&54螺旋矩阵
LeetCode 55跳跃游戏&56合并区间&57插入区间
跟我打卡LeetCode 58最后一个单词长度&59螺旋矩阵Ⅱ&60排列序列
跟我打卡LeetCode 61旋转链表&62不同路径&63不同路径 II

最小路径和

简单的动态规划,只能向右或者向下,所以可以使用动态规划动态的找到最小路径和,先对第一行和第一列特殊处理,然后顺序遍历数组的时候状态转移方程为:

dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];

其中dp[i][j]意为第i行第j列的最小路径和。
具体代码为:

public  int minPathSum(int[][] grid) {int m=grid.length;int n=grid[0].length;int dp[][]=new int[m][n];dp[0][0]=grid[0][0];//先初始化第0行和第0列for(int i=1;i<n;i++){dp[0][i]=dp[0][i-1]+grid[0][i];}for(int j=1;j<m;j++){dp[j][0]=dp[j-1][0]+grid[j][0];}//System.out.println(Arrays.deepToString(dp));for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j]=Math.min(dp[i-1][j],dp[i][j-1])+grid[i][j];}}return dp[m-1][n-1];}

有效数字

验证给定的字符串是否可以解释为十进制数字。

例如:

"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
" -90e3   " => true
" 1e" => false
"e3" => false
" 6e-1" => true
" 99e2.5 " => false
"53.5e93" => true
" --6 " => false
"-+3" => false
"95a54e53" => false说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。
这里给出一份可能存在于有效十进制数字中的字符列表:数字 0-9
指数 - "e"
正/负号 - "+"/"-"
小数点 - "."
当然,在输入中,这些字符的上下文也很重要。

更新于 2015-02-10:
C++函数的形式已经更新了。如果你仍然看见你的函数接收 const char * 类型的参数,请点击重载按钮重置你的代码。

分析
这题其实挺麻烦的,我也是根据样例不停的测试然后才最终得到正确的结果。这些数字和符号有一定的规律和要求。 我的分析就是将数字分成三块 e前,e,e后。而每个数字可能是符号数字小数点等组成需要满足一定规律。符号可以没有,但是数字必须有! 具体可以参考这张图:

实现代码为:

public boolean isNumber(String s) {s=s.trim();char str[]=s.toCharArray();boolean smallpoint=false;//小数点boolean ise=false;//是否遇到eint localindex=0;//当前数字指标// 整体思路            左侧部分              e     右侧部分for(int i=0;i<str.length;i++){if(localindex==0&&(str[i]=='+'||str[i]=='-'))// + -号必须出现在前面 也就是localindex=0{if(smallpoint)return false; //小数点后不能有+- 例如0.+3continue;//否则继续}else if (str[i]=='.') {if(smallpoint||ise)//当有小数点或者在e后面 不能3.12.5 也不能1e2.3return false;else {smallpoint=true;//否则将标记出现过小数点}}else if ((str[i]=='e'||str[i]=='E')&&localindex>0) {//遇到eif(ise)return false;//如果已经有e 那么返回false 不能 4e5eelse {smallpoint=false;//否则说明正常,开始统计e右侧部分。e右侧部分开始重新统计ise=true;//标记e已经出现localindex=0;//数字编号}}else if (str[i]>='0'&&str[i]<='9') {localindex++;}else {return false;}}if (localindex>0) {return true;}else           return false;}

还有这种方法就是有限状态机(DFA)解决,具体解释看题解吧:

图片来源力扣题解

class Solution {public int make(char c) {switch(c) {case ' ': return 0;case '+':case '-': return 1;case '.': return 3;case 'e': return 4;default:if(c >= 48 && c <= 57) return 2;}return -1;}public boolean isNumber(String s) {int state = 0;int finals = 0b101101000;int[][] transfer = new int[][]{{ 0, 1, 6, 2,-1},{-1,-1, 6, 2,-1},{-1,-1, 3,-1,-1},{ 8,-1, 3,-1, 4},{-1, 7, 5,-1,-1},{ 8,-1, 5,-1,-1},{ 8,-1, 6, 3, 4},{-1,-1, 5,-1,-1},{ 8,-1,-1,-1,-1}};char[] ss = s.toCharArray();for(int i=0; i < ss.length; ++i) {int id = make(ss[i]);if (id < 0) return false;state = transfer[state][id];if (state < 0) return false;}return (finals & (1 << state)) > 0;}
}作者:user8973
链接:https://leetcode-cn.com/problems/valid-number/solution/biao-qu-dong-fa-by-user8973/
来源:力扣(LeetCode)

加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 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位也需要进位那么需要重新创建数组扩容赋值返回。

实现代码:

class Solution {public int[] plusOne(int[] digits) {if(digits [digits.length-1]++==9)for(int i=digits.length-1;i>0;i--){digits[i]=0;if(++digits[i-1]!=10)break;}if(digits[0]==10){int value[]=new int[digits.length+1];digits[0]=0;value[0]=1;System.arraycopy(digits,0,value,1,digits.length);return  value;}return digits;}
}

原创不易,bigsai请你帮两件事帮忙一下:

  1. 点赞、在看、分享支持一下, 您的肯定是我创作的源源动力。

  2. 微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。

记得关注、咱们下次再见!

LeetCode 64最小路径和65有效数字66加一相关推荐

  1. leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)

    题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...

  2. leetcode - 64. 最小路径和

    64. 最小路径和 ------------------------------------------ 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总 ...

  3. LeetCode 64. 最小路径和(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示 ...

  4. Leetcode 64. 最小路径和 -- DP算法

    Time: 20190831 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: ...

  5. leetcode 64. 最小路径和

    难度:中等 频次:54 题目:给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 解题思路:动态 ...

  6. 93. Leetcode 64. 最小路径和 (动态规划-路径规划)

    步骤一.确定状态: 1.确定原问题中变化的变量个数 2.考虑最后一步 右下角坐标设为(m-1,n-1) 那么前一步一定是在(m-2,n-1)或者(m-1,n-2) 步骤二.推断状态方程: f[i][j ...

  7. Leetcode 64 最小路径和 (每日一题 20210721)

    给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小.说明:每次只能向下或者向右移动一步.示例 1:输入:grid = [[1,3,1], ...

  8. LeetCode 64 最小路径和

    题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和 为最小.说明:每次只能向下或者向右移动一步. 题解 动态规划 代码 class ...

  9. LeetCode 64.最小路径和(动态规划)

    题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5 ...

最新文章

  1. 画布之轮播图片HTML5,Axure原型设计之轮播图
  2. 支付宝技术风险负责人陈亮:把事情做到极致,技术的差异性才会体现出来
  3. C++中利用WebService下载文件
  4. qsettings mysql_qt连接mysql
  5. iOS-数据库sqlite的使用
  6. Ajax — 第四天
  7. nacos linux启动_微服务系列之Nacos配置中心之一:Nacos介绍与安装
  8. 基于maven的SpringMVC+Spring+MyBatis+Log4j2的pom配置
  9. spring-bean版本_如何模拟Spring bean(版本2)
  10. Java面试必备的集合源码详解,砥砺前行!
  11. 十篇论文攻克自然语言处理底层原理!推荐大家复现!
  12. select option 不写 value 属性 产生的浏览器差异
  13. 一个32岁入门的70后程序员给我的启示
  14. 【NumPy基础】100道numpy练习——进阶篇
  15. win10安装SqlServer2005教程
  16. 汽车故障诊断技术【4】
  17. 我眼中的国内IT书籍以及各大出版社
  18. 【Project】基于LD3320 的智能语音控制系统
  19. Linux内核数据结构之 radix tree
  20. D38 463. Island Perimeter

热门文章

  1. BUUCTF——[ACTF新生赛2020]SoulLike——使用angr解
  2. 数据结构--双向链表
  3. 关于报错ImportError: cannot import name ‘AbstractKeyedTuple‘ from ‘sqlalchemy.util._collections‘的解决
  4. [PSA]-PSA Certified简介
  5. optee应用程序中malloc函数的原理介绍
  6. mysql decs倒叙查询_mysql按照日期方式查询
  7. Windows环境下利用VS和mingw编译LLVM
  8. Ubuntu配置静态ip联网总结
  9. php源代码保护——PHP加密方案分析解密还原
  10. Mybatis动态的添加删除列