2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
नोटः ×
1
यदा ददातुres
मूल्यम्+1
, ततः गभीरता-प्रथम-अन्वेषणं सर्वाणि समीपस्थानि भूमिं समुद्रेषु परिवर्तयतिdfs
अन्तः श्रेणी न्यायः, .[0, **length-1]**
public int numIslands(char[][] grid) {
int res = 0;
int n = grid.length;;
int m = grid[0].length;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (grid[i][j] == '1'){
res++;
dfs(grid, i, j);
}
}
}
return res;
}
private void dfs(char[][] grid, int i, int j) {
if (i<0 || i>=grid.length || j<0 || j>=grid[0].length){
return;
}
if (grid[i][j] == '0'){
return;
}
grid[i][j] = '0';
dfs(grid, i+1, j);
dfs(grid, i, j+1);
dfs(grid, i-1, j);
dfs(grid, i, j-1);
}
नोटः ×
नोटः ××
List<Integer>[] graph
तस्मिन् समये Labuladong इत्यनेन उक्तं यत् अधिकांशकालं कोडं लिखन्ते सति प्रथमं LinkedList प्रकारस्य सरणीं रचयन्तु, ततः अवश्यमेव ध्यानं ददतु ।graph[i] = new LinkedList<>();
hasVisited
तथाonPath
द्विविध अभिलेखाः, २.onPath
अहं अभिलेखान् अवगन्तुं शक्नोमि,hasVisited
अद्यापि अस्माभिः अभिलेखानां विषये चिन्तनीयम् अस्ति ।
boolean hasCycle = false;
boolean[] hasVisited;
boolean[] onPath;
public boolean canFinish(int numCourses, int[][] prerequisites) {
List<Integer>[] graph = buildGraph(numCourses, prerequisites);
hasVisited = new boolean[numCourses];
onPath = new boolean[numCourses];
for (int i = 0; i < numCourses; i++) {
traverse(graph, i);
}
return !hasCycle;
}
private void traverse(List<Integer>[] graph, int i) {
if (onPath[i]){
hasCycle = true;
}
if (hasCycle || hasVisited[i]){
return;
}
hasVisited[i] = true;
onPath[i] = true;
for (Integer integer : graph[i]) {
traverse(graph, integer);
}
onPath[i] = false;
}
private List<Integer>[] buildGraph(int numCourses, int[][] prerequisites) {
List<Integer>[] graph = new LinkedList[numCourses];
for (int i = 0; i < graph.length; i++) {
graph[i] = new LinkedList<>();
}
for (int[] prerequisite : prerequisites) {
int from = prerequisite[1];
int to = prerequisite[0];
graph[from].add(to);
}
return graph;
}
नोटः ×
class Trie {
class TrieNode{
boolean isEnd;
TrieNode[] nodes;
public TrieNode(){
isEnd = false;
nodes = new TrieNode[26];
}
}
private TrieNode root;
public Trie() {
root = new TrieNode();
}
public void insert(String word) {
TrieNode node = root;
for (char c : word.toCharArray()) {
if (node.nodes[c-'a'] == null){
node.nodes[c-'a'] = new TrieNode();
}
node = node.nodes[c-'a'];
}
node.isEnd = true;
}
public boolean search(String word) {
TrieNode node = root;
for (char c : word.toCharArray()) {
if (node.nodes[c-'a'] == null){
return false;
}
node = node.nodes[c-'a'];
}
return node.isEnd;
}
public boolean startsWith(String prefix) {
TrieNode node = root;
for (char c : prefix.toCharArray()) {
if (node.nodes[c-'a'] == null){
return false;
}
node = node.nodes[c-'a'];
}
return true;
}
}