
算法
代码心语
这个作者很懒,什么都没留下…
展开
-
LeecCode 1091 JAVA BFS
class Solution { public static int shortestPathBinaryMatrix(int[][] grid) { int [][] dir = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; int minLength[][] = new int[grid.length][grid.length]; Queue<int[]> queue.原创 2022-02-11 01:50:45 · 298 阅读 · 0 评论 -
迷宫的最短路径 BFS JAVA
用队列实现BFS: java.util.Queue初始化一个无穷大的数INF,准备一个距离二维数组,数组规模与输入相匹配,每一元素初始化为INF。这个距离二维数组可以记录从起点到当前位置的距离,也可以作为记忆化使用(即当前位置存储的距离 != INF)。迷宫地图:/*10#S######.#......#..#.#.##.##.#.#........##.##.####....#....#.#######.#....#......####.###.....#...G#*/原创 2022-02-09 23:27:22 · 1235 阅读 · 1 评论 -
蓝桥杯 全球变暖 JAVA
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); char[][] map = new char[n][n]; boolean[][] vis = new boolean[n][n];.原创 2022-02-08 16:20:32 · 502 阅读 · 0 评论 -
蓝桥杯 全球变暖 DFS&BFS
最后一个过不了干啥啥不行,写烂代码第一名我就是记录一下,建议别看import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); char[][] map = new char[n][n];原创 2022-02-08 15:35:42 · 585 阅读 · 0 评论 -
DFS LeetCode 547 省份数量(原题名: Friend Circles)
class Solution { private int n = 0; public int findCircleNum(int[][] M) { n = M.length; int res = 0; boolean[] vis = new boolean[n]; for (int i = 0; i < n; i++) { if (vis[i] == false) { .原创 2022-02-04 02:24:42 · 316 阅读 · 0 评论 -
DFS LeetCode 417
class Solution { private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; public List<List<Integer>> pacificAtlantic(int[][] grid) { List<List<Integer>> list = new ArrayList<>(); int[][] recLU.原创 2022-02-04 01:09:10 · 337 阅读 · 0 评论 -
DFS Leetcode 200
class Solution { public int numIslands(char[][] grid) { int res = 0; for(int i = 0; i< grid.length;i++){ for(int j = 0; j<grid[0].length;j++){ if(dfs(grid,i,j)){ res+=1; .原创 2022-02-03 17:21:59 · 194 阅读 · 0 评论 -
DFS Leetcode 695
class Solution { public int maxAreaOfIsland(int[][] grid) { int res = 0; int xLen = grid.length; int yLen = grid[0].length; for (int i = 0; i < xLen; i++) { for (int j = 0; j < yLen; j++) { .原创 2022-02-03 16:31:25 · 334 阅读 · 0 评论 -
蓝桥杯 正则问题 JAVA
import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] arrC = sc.next().toCharArray(); Stack<Character> sk = new Stack<>(); for (int i.原创 2022-02-02 16:42:15 · 421 阅读 · 0 评论 -
蓝桥杯 日期问题 JAVA
有一说一,这题30分,要考虑的点还是很多的。下面的写法有点麻烦。import java.util.Arrays;import java.util.Scanner;import java.util.TreeSet;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String s = scan.next(原创 2022-02-01 04:19:33 · 477 阅读 · 0 评论 -
蓝桥杯 迷宫 2017 A
原题数据本来是char数组误写为String数组了,将就看吧。注释的是输入输出功能。public class Main { public static void main(String[] args) {// Scanner scan = new Scanner(System.in);// int N = scan.nextInt();// int M = scan.nextInt(); int N = 10;原创 2022-01-30 02:08:17 · 757 阅读 · 0 评论 -
dfs: POJ 2386 JAVA
/*10 12W . . . . . . . . W W .. W W W . . . . . W W W. . . . W W . . . W W .. . . . . . . . . W W .. . . . . . . . . W . .. . W . . . . . . W . .. W . W . . . . . W W .W . W . W . . . . . W .. W . W . . . . . . W .. . W . . . . . . . W .*/im.原创 2022-01-29 05:22:01 · 588 阅读 · 0 评论 -
全排列应用:输出子集
public class Main { public static void main(String[] args) { String s = "12345"; char[] c = s.toCharArray(); for (int i = 0; i < c.length; i++) { char [] cc = new char[i+1]; for (int j = 0; j < cc..原创 2022-01-28 21:50:53 · 6103 阅读 · 0 评论 -
全排列 JAVA实现
需要注意是恢复(回溯回去)。public class Main { public static void main(String[] args) { String s = "ABC"; permutation(0,s.length()-1,s.toCharArray()); } private static void permutation(int left, int right, char[] c) { if(left ==原创 2022-01-28 21:42:50 · 212 阅读 · 0 评论 -
斐波那契数列的记忆化
用途:复杂度优化。public class Main { public static void main(String[] args) { System.out.println(fib(20)); } static int fib(int n){ int [] res = new int[25]; if(n==1 | n==2){ res[n] = 1; return res[n原创 2022-01-28 21:23:09 · 256 阅读 · 0 评论 -
蓝桥杯 等差数列
先排序,然后两两数之间相减得到这个结果的次数最多的就是公差。然后再用(数组最大值-最小值)/公差 + 1 就是项数。import java.util.ArrayList;import java.util.Scanner;import java.util.TreeSet;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in)原创 2022-01-27 21:37:18 · 6267 阅读 · 0 评论 -
蓝桥杯 完全二叉树的权值
本题的关键点在于注意完全二叉树并非满二叉树。可以根据深度强转整数进行判断:if(Math.log(n+1)/Math.log(2) > (int)(Math.log(n+1)/Math.log(2))){}完整代码:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System原创 2022-01-27 00:17:39 · 893 阅读 · 0 评论 -
蓝桥杯 特别数的和
做法是按位取余,这里换个写法。转换为StringBuilder:public class Main { public static void main(String[] args) { int sum = 0; Scanner scan = new Scanner(System.in); int n = scan.nextInt(); for (int i = 1; i <= n; i++) { ..原创 2022-01-26 21:47:46 · 177 阅读 · 0 评论 -
蓝桥杯 数的分解
times爆了 填空题public class Main { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 1999; i++) { StringBuilder si = new StringBuilder(String.valueOf(i)); if(si.indexOf("2") == -1 &am原创 2022-01-25 22:12:32 · 137 阅读 · 0 评论 -
关于PAT 1001 害死人不偿命的(3n+1)猜想的疑问
卡拉兹(Callatz)猜想:是对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。题目描述:我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1?代码一:#include<stdio.h>int main(){ int n=0,i=0; scanf("%d",&n); whil...原创 2021-09-03 11:25:09 · 192 阅读 · 0 评论