給定乙個無重複元素的陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的數字可以無限制重複被選取。
class
solution
public
void
find
(list
> listall, list
temp,
int[
] candidates,
int target,
int index)
if(target < candidates[0]
)return
;for
(int i = index; i < candidates.length && candidates[i]
<= target; i++)}
}
給定乙個陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。
candidates 中的每個數字在每個組合中只能使用一次。
class
solution
public
void
find
(list
> res,
int index,
int sum, list
tmp_list,
int[
] candidates,
int target)
for(
int i = index; i < candidates.length; i++)}
}
找出所有相加之和為 n 的 k 個數的組合。組合中只允許含有 1 - 9 的正整數,並且每種組合中不存在重複的數字。
class
solution
; list
> ans =
newarraylist
>()
;dfs
(nums,
0,n,k,
newarraylist
(),ans)
;return ans;
}private
void
dfs(
int[
] nums,
int i,
int left,
int k,arraylist
cur,list
> ans)
else
return;}
for(
int j = i;j < nums.length;j++)}
}
給定乙個沒有重複數字的序列,返回其所有可能的全排列。
class
solution
return res;
}private
void
find
(list
> res, list
tmp,
int[
] nums)
for(
int i =
0; i < nums.length; i++)}
}}/* 方法二:不對陣列進行加減操作,而是交換,這種方法更快 ----------------------------------*/
class
solution
digui
(len,output,nums_li,first)
;//呼叫遞迴函式
return output;
}//遞迴函式
public
static
void
helper
(int len,list
> output
,arraylist
nums_li,
int first)
int i;
for(i=first;i}/* 方法三: 三個for迴圈,其實和for迴圈很像 -------------------------------------*/
class
solution
} result = resultx;
}return result;
}}
給定乙個可包含重複數字的序列,返回所有不重複的全排列。
class
solution
private
void
backtrack
(list
> res,
int[
] nums,
int[
] visited, arraylist
tmp)
for(
int i =
0; i < nums.length; i++)}
}
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
class
solution
private
void
subsetscore
(arraylist
> res, arraylist
list,
int[
] nums,
int index)}}
/* 方法二: 兩個for迴圈完成 -------------------------------------*/
class
solution
}return result;
}}
給定乙個可能包含重複元素的整數陣列 nums,返回該陣列所有可能的子集(冪集)。
說明:解集不能包含重複的子集。
class
solution
public
void
backtrack
(list
> res,
int[
]nums,list
tmp,
int start)
}}
給定兩個整數 n 和 k,返回 1 … n 中所有可能的 k 個數的組合。
class
solution
private
void
helper
(int n,
int k,
int start, list
> res, list
temp)
for(
int j = start; j <= n -
(k - temp.
size()
)+1; j++)}
}
給定乙個只包含數字的字串,復原它並返回所有可能的 ip 位址格式。
class
solution
private
void
helper
(int start, string temp,
int flag, string s, list
list,
int len)
if(flag <0)
return
;for
(int i = start; i < start+
3; i++)if
(integer.
parseint
(s.substring
(start, i+1)
)<=
255)
helper
(i+1
, temp+s.
substring
(start, i+1)
+"."
, flag-1,
s, list, len);}
}}}
LeetCode刷題筆記 46(涉及到回溯)
題目 全排列 給定乙個沒有重複數字的序列,返回其所有可能的全排列。示例 輸入 1,2,3 輸出 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 解決乙個回溯問題,實際上就是乙個決策樹的遍歷過程。你只需要思考 3 個問題 1 路徑 也就是已經做出的選擇。2 選擇列表 也就是你當...
Leetcode刷題筆記
1.兩數之和給定乙個整數陣列nums 和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。ps 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路 用target減去nums中的每乙個數,並設立乙個字典來記錄對應的下標 class...
LeetCode刷題筆記
實現strstr 給定乙個 haystack 字串和乙個 needle 字串,在 haystack 字串中找出 needle 字串出現的第乙個位置 從0開始 如果不存在,則返回 1。示例 1 輸入 haystack hello needle ll 輸出 2 示例 2 輸入 haystack aaaa...