5055. 困於環中的機械人
在無限的平面上,機械人最初位於 (0,
0)
(0, 0)
(0,0
) 處,面朝北方。機械人可以接受下列三條指令之一:
" g"
"g""g
":直走 1
11 個單位
" l"
"l""l
":左轉 90
9090度"r
""r"
"r":右轉 90
9090
度機械人按順序執行指令 ins
truc
tion
sinstructions
instru
ctio
ns,並一直重複它們。
只有在平面中存在環使得機械人永遠無法離開時,返回 tru
etrue
true
。否則,返回 fal
se
false
false。
示例 111:
輸入:"ggllgg"
輸出:true
解釋:機械人從 (0,
0) 移動到 (0,
2),轉 180 度,然後回到 (0,
0)。重複這些指令,機械人將保持在以原點為中心,2 為半徑的環中進行移動。
示例 222:
輸入:"gg"
輸出:false
解釋:機械人無限向北移動。
示例 333:
輸入:"gl"
輸出:true
解釋:機械人按 (0,
0)->(0
,1)->(-
1,1)
->(-
1,0)
->(0
,0)->..
. 進行移動。
1.
1<= instructions.length <=
1002. instructions[i] 在 中
思路:如果機械人無法離開環,根據題意,機械人最多重複四次指令必然會回到原點。
class solution
;int dy[4]
=;bool isrobotbounded
(string instructions)
//左轉
if(c ==
'l')
d =(d +1)
%4;//右轉
if(c ==
'r')
d =(d +3)
%4;}
}return x ==
0&& y ==0;
}};
5056. 不鄰接植花
有 n
nn 個花園,按從 1
11 到 n
nn 標記。在每個花園中,你打算種下四種花之一。
p at
hs[i
]=[x
,y
]paths[i] = [x, y]
paths[
i]=[
x,y]
描述了花園 x
xx 到花園 y
yy 的雙向路徑。
另外,沒有花園有 3
33 條以上的路徑可以進入或者離開。
你需要為每個花園選擇一種花,使得通過路徑相連的任何兩個花園中的花的種類互不相同。
以陣列形式返回選擇的方案作為答案 ans
we
ranswer
answer
,其中 ans
wer[
i]
answer[i]
answer
[i] 為在第 (i+
1)
(i+1)
(i+1
) 個花園中種植的花的種類。花的種類用 1,2
,3,4
1, 2, 3, 4
1,2,3,
4 表示。保證存在答案。
示例 111:
輸入:n =
3, paths =[[
1,2]
,[2,
3],[
3,1]
]輸出:[1,
2,3]
示例 222:
輸入:n =
4, paths =[[
1,2]
,[3,
4]]輸出:[1,
2,1,
2]
示例 333:
輸入:n =
4, paths =[[
1,2]
,[2,
3],[
3,4]
,[4,
1],[
1,3]
,[2,
4]]輸出:[1,
2,3,
4]
1.
1<= n <=
100002.0
<= paths.size <=
20000
3. 不存在花園有 4 條或者更多路徑可以進入或離開。
4. 保證存在答案。
思路:理解題意才是解這道題的關鍵。因為沒有花園有 3
33 條以上的路徑可以進入或者離開,所以我們可以儲存每個花園到其餘花園的路;當求某個花園應該種哪種花時,由於最多只有三條路徑、四種花色,可以迴圈判斷與其相連的花園的花色,排除掉這些花園的花色,選擇另外的一種作為當前花園的花色
class solution
vector<
int>
ans(n)
;for
(int i =
0; i < n;
++i)
//排除已使用的花園花色,選擇另外的花色
for(
int j =
0; j <4;
++j)}}
return ans;}}
;
5057. 分隔陣列以得到最大和
給出整數陣列 a
aa,將該陣列分隔為長度最多為 k
kk 的幾個(連續)子陣列。分隔完成後,每個子陣列的中的值都會變為該子陣列中的最大值。
返回給定陣列完成分隔後的最大和。
示例:
輸入:a =[1
,15,7
,9,2
,5,10
], k =
3輸出:84
解釋:a 變為 [15,
15,15,
9,10,
10,10]
1.
1<= k <= a.length <=
5002.
0<= a[i]
<=10^
6
思路:典型的動態規劃題。
class solution
}return dp[n];}
};
Leetcode 第136場周賽解題報告
週日的比賽的時候正在外面辦事,沒有參加。賽後看了下題目,幾道題除了表面要考的內容,還是有些能發散擴充套件的地方。做題目不是最終目的,通過做題發現知識盲區,去研究學習,才能不斷提高。理論和實際是有關係的,一些題目也都有現實意義。計算機的一些模擬操作,通過數學演算法,能夠大大減輕 量和演算法複雜度。第一...
Leetcode 第136場周賽解題報告
週日的比賽的時候正在外面辦事,沒有參加。賽後看了下題目,幾道題除了表面要考的內容,還是有些能發散擴充套件的地方。做題目不是最終目的,通過做題發現知識盲區,去研究學習,才能不斷提高。理論和實際是有關係的,一些題目也都有現實意義。計算機的一些模擬操作,通過數學演算法,能夠大大減輕 量和演算法複雜度。第一...
leetcode 第132場周賽
愛麗絲和鮑勃一起玩遊戲,他們輪流行動。愛麗絲先手開局。最初,黑板上有乙個數字n。在每個玩家的回合,玩家需要執行以下操作 如果玩家無法執行這些操作,就會輸掉遊戲。只有在愛麗絲在遊戲中取得勝利時才返回true,否則返回false。假設兩個玩家都以最佳狀態參與遊戲。示例 1 輸入 2輸出 true解釋 愛...