当前位置: 首页 > news >正文

做网站用linux哪个版本百度关键词热度

做网站用linux哪个版本,百度关键词热度,密云住房和城乡建设委员会门户网站,重庆专业做网站的公司牛客网【面试必刷TOP101】~ 06 递归/回溯 文章目录 牛客网【面试必刷TOP101】~ 06 递归/回溯[toc]BM55 没有重复项数字的全排列(★★)BM56 有重复项数字的全排列(★★)BM57 岛屿数量(★★)BM58 字符串的排列(★★)BM59 N皇后问题(★★★)BM60 括号生成(★★)BM61 矩阵最长递增路…

牛客网【面试必刷TOP101】~ 06 递归/回溯

文章目录

    • 牛客网【面试必刷TOP101】~ 06 递归/回溯
    • @[toc]
      • BM55 没有重复项数字的全排列(★★)
      • BM56 有重复项数字的全排列(★★)
      • BM57 岛屿数量(★★)
      • BM58 字符串的排列(★★)
      • BM59 N皇后问题(★★★)
      • BM60 括号生成(★★)
      • BM61 矩阵最长递增路径(★★)

BM55 没有重复项数字的全排列(★★)

回溯,移动元素至前

public class Solution {ArrayList<ArrayList<Integer>> res;public ArrayList<ArrayList<Integer>> permute (int[] nums) {res = new ArrayList<>();if (nums == null || nums.length == 0) return res;ArrayList<Integer> lists = new ArrayList<>();// Arrays.sort(nums);for (int num : nums) lists.add(num);backtrack(lists, 0, lists.size());return res;}  private void backtrack(ArrayList<Integer> lists, int begin, int end) {if (begin == end) {res.add(new ArrayList<>(lists));return;}for (int i = begin; i < end; i++) {int val = lists.remove(i);lists.add(begin, val);backtrack(lists, begin + 1, end);val = lists.remove(begin);lists.add(i, val);}}
}

BM56 有重复项数字的全排列(★★)

排序+ 回溯+set去重

public class Solution {ArrayList<ArrayList<Integer>> res;public ArrayList<ArrayList<Integer>> permuteUnique (int[] nums) {res = new ArrayList<>();if (nums == null || nums.length == 0) return res;ArrayList<Integer> lists = new ArrayList<>();Arrays.sort(nums);for (int num : nums) lists.add(num);backtrack(lists, 0, lists.size());return res;}private void backtrack(ArrayList<Integer> lists, int begin, int end) {if (begin == end) {res.add(new ArrayList<>(lists));return;}Set<Integer> set = new HashSet<>();for (int i = begin; i < end; i++) {if (set.contains(lists.get(i))) continue;set.add(lists.get(i));int val = lists.remove(i);lists.add(begin, val);backtrack(lists, begin + 1, end);lists.remove(begin);lists.add(i, val);}}}

BM57 岛屿数量(★★)

方法一:回溯(120ms)

public class Solution {private static int[] dirs = {-1, 0, 1, 0, -1}; public int solve (char[][] grid) {if (grid == null || grid.length == 0 || grid[0].length == 0) return 0;int count = 0;int r = grid.length, c = grid[0].length;for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (grid[i][j] == '0') continue;dfs(grid, i, j, r, c);count++;}}return count;}private void dfs(char[][] grid, int i, int j, int r, int c) {if (i < 0 || j < 0 || i >= r || j >= c || grid[i][j] == '0') {return;}grid[i][j] = '0';for (int d = 0; d < 4; d++) {int x = i + dirs[d], y = j + dirs[d + 1];dfs(grid, x, y, r, c);}}}

更直观的定义

public class Solution {public int solve (char[][] grid) {int count = 0;for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[0].length; j++) {if (grid[i][j] == '0') continue;sinkLand(grid, i, j);count++;}}return count;}private void sinkLand(char[][] grid, int i, int j) {if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == '0') {return;}grid[i][j] = '0';sinkLand(grid, i - 1, j);sinkLand(grid, i + 1, j);sinkLand(grid, i, j - 1);sinkLand(grid, i, j + 1);}}

BM58 字符串的排列(★★)

同BM56,有重复字符的全排列

public class Solution {ArrayList<String> res;public ArrayList<String> Permutation (String str) {res = new ArrayList<>();if (str == null || str.equals("")) return res;char[] cs = str.toCharArray();Arrays.sort(cs);backtrack(cs, 0, cs.length);return res;}private void backtrack(char[] cs, int begin, int end) {if (begin == end) {res.add(new String(cs));return;}Set<Character> set = new HashSet<>();for (int i = begin; i < end; i++) {if (set.contains(cs[i])) continue;set.add(cs[i]);swap(cs, begin, i);backtrack(cs, begin + 1, end);swap(cs, begin, i);}}private void swap(char[] cs, int i, int j) {char c = cs[i];cs[i] = cs[j];cs[j] = c;}
}

BM59 N皇后问题(★★★)

public class Solution {private int count;private int[] x;public int Nqueen (int n) {count = 0;x = new int[n];Arrays.fill(x, -1);backtrack(n);return count;}private void backtrack(int n) {int k = 0;while (k >= 0) {x[k]++;while (x[k] < n && isClash(k)) x[k]++;if (x[k] < n && k == n - 1) count++;if (x[k] < n && k < n - 1) {k++;} else {x[k--] = -1;}}}private boolean isClash(int k) {for (int i = 0; i < k; i++) {if (x[i] == x[k] || Math.abs(i - k) == Math.abs(x[i] - x[k])) {return true;}}return false;}}

BM60 括号生成(★★)

递归

public class Solution {public ArrayList<String> res;public ArrayList<String> generateParenthesis (int n) {res = new ArrayList<>();dfs(new String(), n, n);return res;}private void dfs(String s, int le, int ri) {if (le > ri || le < 0 || ri < 0) return;if (le == 0 && ri == 0) {res.add(s);return;}dfs(s + "(", le - 1, ri);dfs(s + ")", le, ri - 1);}
}

BM61 矩阵最长递增路径(★★)

dfs+记忆化搜索

public class Solution {private static final int[] dirs = {-1, 0, 1, 0, -1};private int[][] ms;private int R, C;public int solve (int[][] matrix) {if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {return 0;}R = matrix.length;C = matrix[0].length;ms = new int[R][C];int res = 0;for (int i = 0; i < R; i++) {for (int j = 0; j < C; j++) {res = Math.max(res, dfs(matrix, i, j));} }return res;}private int dfs(int[][] matrix, int i, int j) {if (ms[i][j] != 0) return ms[i][j];ms[i][j]++;for (int k = 0; k < 4; k++) {int x = i + dirs[k], y = j + dirs[k + 1];if (x < 0 || y < 0 || x >= R || y >= C || matrix[i][j] >= matrix[x][y]) {continue;}ms[i][j] = Math.max(ms[i][j], dfs(matrix, x, y) + 1);}return ms[i][j];}}

http://www.hkea.cn/news/463958/

相关文章:

  • 网站开发公司 广告词优化方案电子版
  • 做便民工具网站怎么样关键词挖掘站长工具
  • 纺织面料做哪个网站好百度站长资源
  • 菏泽网站建设哪好怎样做平台推广
  • 网上有做logo的网站吗网络营销的核心是什么
  • 自建网站怎么做推广微信营销策略
  • 跳网站查询的二维码怎么做的关键词排名点击软件网站
  • 兼容手机的网站百度怎么推广自己的视频
  • 宝安中心医院入职体检跟我学seo
  • 企业网站后端模板石家庄疫情最新情况
  • 沈阳哪家网站做的好网络营销是指什么
  • 我的网站模板网站建设主要推广方式
  • 国外app素材网站seo运营是做什么的
  • 企业网站seo怎么做百度帐号个人中心
  • 郑州网站建设亅汉狮网络百度网盘seo优化
  • 模板型网站seo优化平台
  • 官方网站下载免费软件培训机构有哪些?哪个比较好
  • 网站导航怎么做的惠州seo计费管理
  • 建设公司网站模板全国唯一一个没有疫情的城市
  • 网站怎么做seo_南京百度提升优化
  • 旅游网站开发与设计论文怎么样建网站
  • 北京网站推广排名公司企业网站的搜索引擎推广与优化
  • 动态网站期末设计广告营销策略
  • 山东网站营销推广费用旺道seo推广
  • 邢台网站建设服务周到百度数据分析工具
  • 周口网站建设竞价恶意点击犯法吗
  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件
  • 做立体字的网站重庆seo公司排名
  • 电子商务网站的建设包含哪些流程搜索引擎关键词怎么优化