标签:return rs int sum nums 报数 算法 子序
1.报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:
1. 1 2. 11 3. 21 4. 1211 5. 111221
1
被读作 "one 1"
("一个一"
) , 即 11
。11
被读作 "two 1s"
("两个一"
), 即 21
。21
被读作 "one 2"
, "one 1"
("一个二"
, "一个一"
) , 即 1211
。
给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。
示例 1: 输入: 1 输出: "1" 示例 2: 输入: 4 输出: "1211"
java
class Solution { public String countAndSay(int n) { if(n==0) return ""; if(n==1) return "1"; String s = "1"; for(int i=2;i<=n;i++){ s=backStr(s); } return s; } public String backStr(String s){ StringBuilder sb = new StringBuilder(); char c = s.charAt(0); int count=1; int i=1; for(;i<s.length();i++){ if(c==s.charAt(i)){ count++; }else{ sb.append(count).append(c); c = s.charAt(i); count=1; } } if(count>0){ sb.append(count).append(c); } return sb.toString(); } }
php
class Solution { /** * @param Integer $n * @return String */ public function countAndSay($n) { if ($n == 0) return ""; if ($n == 1) return "1"; $s = "1"; for ($i = 2; $i <= $n; $i++) { $s = $this->backStr($s); } return $s; } public function backStr($s) { $rs = ""; $k = 1; $c = $s[0]; for ($i = 1; $i < strlen($s); $i++) { if ($s[$i] == $c) { $k++; } else { $rs .= $k . $c; $c = $s[$i]; $k = 1; } } if($k>0){ $rs .= $k . $c; } return $rs; } }
2.最大子序和
给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
java
class Solution { public int maxSubArray(int[] nums) { int sum = 0; int rs = nums[0]; for(int n:nums){ if(sum>0){ sum+=n; }else{ sum = n; } rs = Math.max(rs,sum); } return rs; } }
php
class Solution { /** * @param Integer[] $nums * @return Integer */ function maxSubArray($nums) { $sum = 0; $rs = $nums[0]; foreach ($nums as $key => $value) { if($sum>0){ $sum+=$value; }else{ $sum = $value; } $rs = max($rs,$sum); } return $rs; } }
标签:return,rs,int,sum,nums,报数,算法,子序 来源: https://www.cnblogs.com/baby123/p/10880882.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。