aboutsummaryrefslogtreecommitdiff
path: root/other/jump_game3.cpp
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2025-03-10 00:36:13 -0600
committerJack Sangdahl <[email protected]>2025-03-10 00:36:13 -0600
commit7c60dee83b436e8e8a667bf9f191beced8de4fc3 (patch)
treeeb7a24ee2067f92245c57bb118e85a1baf15df50 /other/jump_game3.cpp
parent5d7cdc215e4ba1ec4cbb24c084cccb5e5e641468 (diff)
downloadleetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.tar.gz
leetcode-7c60dee83b436e8e8a667bf9f191beced8de4fc3.zip
chore: move cpp and rust code to directory
Diffstat (limited to 'other/jump_game3.cpp')
-rw-r--r--other/jump_game3.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/other/jump_game3.cpp b/other/jump_game3.cpp
new file mode 100644
index 0000000..03f7d37
--- /dev/null
+++ b/other/jump_game3.cpp
@@ -0,0 +1,27 @@
+#include "leetcode.h"
+
+class Solution {
+public:
+ bool canReach(vector<int> &arr, int start) {
+ vector<bool> visited(arr.size(), false);
+ return dfs(arr, start, visited);
+ }
+
+private:
+ bool dfs(vector<int> &arr, int curr, vector<bool> &k) {
+ if ((curr < 0) || (curr >= arr.size()) || k[curr])
+ return false;
+ if (arr[curr] == 0)
+ return true;
+ k[curr] = true;
+ return dfs(arr, curr + arr[curr], k) || dfs(arr, curr - arr[curr], k);
+ }
+};
+
+int main() {
+ Solution obj;
+ vector<int> arr1 = {4, 2, 3, 0, 3, 1, 2}, arr2 = {3, 0, 2, 1, 2};
+ testBool(obj.canReach(arr1, 5)); // true
+ testBool(obj.canReach(arr1, 0)); // true
+ testBool(obj.canReach(arr2, 2)); // false
+}