LeetCode日本語修行2日目- [213- House Robber]
HouseRobberで適切な日本語は何。。。
強盗?
泥棒?
House Robber
参考:https://leetcode-cn.com/problems/house-robber-ii/
問題の内容
今、プロの泥棒としてのあなた、壮大な目標がありまう。
この町の全ての家を盗む。
各家に一定の現金が隠れています。
家と家並んでて、丸に成っています、最初と最後の家がくっついているということです。
また、家と家の間に防犯システムがあります。隣の家が同じ夜に入られたら、自動的に通報します。
各家の現金を整数配列を指定します。
警報装置に触せず、最高額を目指せよ
通訳、難しい。。。
例:
示例 1:
入力:nums = [2,3,2]
出力:3
解释:一番と三番は繋いでいますので、同じ夜で盗むは禁止。
示例 2:
入力:nums = [1,2,3,1]
出力:4
解释:一番と三番 1+3
示例 3:
输入:nums = [0]
输出:0
ヒント:
1 <= nums.length <= 100
0 <= nums[i] <= 1000
今回は、198の問題ほぼ同じですが、相違点は、最初と最後の家が繋いで
この場合、二つの状況に分けましょう。
一つは最初の家に手を出す、この場合:nums計算範囲は0...nums.size-2
も一つは最初の家に手を出さない、この場合:nums計算範囲は1...nums.size-1
そして、それぞれの条件の結果を出す、二つを比較して、 OK
class Solution {
fun rob(nums: IntArray): Int {
if(nums.size == 1){
return nums[0]
} else if(nums.size == 2){
return Math.max(nums[0],nums[1])
} else{
return Math.max(myRob(0,nums.size-1,nums),myRob(1,nums.size,nums))
}
}
fun myRob(start: Int,end: Int,nums: IntArray) : Int{
var pre = nums[start]
var cur = Math.max(nums[start],nums[start+1])
for(i in start+2 until end){
var temp = cur
cur = Math.max(cur,pre + nums[i])
pre = temp
}
return cur
}
}
Author And Source
この問題について(LeetCode日本語修行2日目- [213- House Robber]), 我々は、より多くの情報をここで見つけました https://qiita.com/Aethey/items/1d6f598be9e7f742d370著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .