leecode
龍的天空
一枚流浪社会的码农
展开
-
回溯法求解N皇后
题目:解法:这道题用回溯法求解,我们从第一行开始尝试放棋子,如果这一行有位置不冲突就放下去,继续下一行,如果这一行没有可行的位置就回溯到上一行,以此类推下去。检测对角线是否冲突是有规律的,下面这种的规律是:对于同一对角线的元素,他们的横坐标与纵坐标相加的和是相等的,数量为2*n-1个;而这种的规律是:对于同一对角线的元素,他们的横坐标与纵坐标相减的和是相等的,数量也为2*n-1个;class Solution { private boolean[] col; .原创 2020-06-02 10:20:33 · 223 阅读 · 0 评论 -
回溯法求解组合问题
题目:典型的回溯算法问题,就是在一颗决策树上一直做选择,没有可以选择的时候就撤销选择,class Solution { List<List<Integer>> res=new ArrayList<>(); public List<List<Integer>> combine(int n, int k) { if(n<=0 || k<=0) return res; Lis.原创 2020-05-31 16:09:11 · 1956 阅读 · 0 评论 -
剑指offer:二进制中1的个数
题目:解题:用&运算(&运算的规则就是两个1做&运算结果为1,其他为0) ,对于n-1,它的 最右边的1相比n 变成0,此1右边的0都变成1。n跟n-1做&运算的时候会消去最右边的一个1,所以每次消去一个1就计数一次,直到n等于0为止:public class Solution { // you need to treat n as an unsigned value public int hammingWe...原创 2020-05-28 18:28:32 · 206 阅读 · 0 评论 -
面试题13:机器人的运动范围
题目:题解:典型的dfs问题,可以理解为在行坐标和列坐标的数位之和小于等于k的情况下,从左上角走到右下角一共可以走多少步。class Solution { private int count=0; //结果数 public int movingCount(int m, int n, int k) { boolean [][] visit=new boolean[m][n]; //走过的坐标记录下来 dfs(0,0,m,n,k,visit);原创 2020-05-27 22:08:39 · 186 阅读 · 0 评论 -
BFS求解腐烂的橘子
题目:分析:这道题其实就是求腐烂橘子到所有新鲜橘子的最短路径。直接用BFS遍历整个图,把所有新鲜的橘子都感染。class Solution { public int orangesRotting(int[][] grid) { int row=grid.length; //行 int col=grid[0].length; //列 Queue<int []> queue=new LinkedList<>(); /.原创 2020-05-19 16:47:14 · 258 阅读 · 0 评论 -
LinkedHashMap实现LRU缓存
题目:解答:java集合类中LinkedHashMap是基于哈希链表结构的,刚好用来实现LRU缓存很方便。class LRUCache {private int capacity;Map<Integer,Integer> map; //构造函数 public LRUCache(int capacity) { this.capacity=capacity; map=new LinkedHashMap<>(); //哈希原创 2020-05-15 14:39:35 · 189 阅读 · 0 评论 -
二维数组的查找
题目:解答:根据二维数组从上到下,从左从右递增的特点,我们可以从右上角出发开始比较 。1.如果等于目标数就返回结果;2.如果小于目标数就向下移动;3.如果大于目标数就向左移动;class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix.length == 0 || matrix[0].length == 0) { .原创 2020-05-14 17:33:10 · 201 阅读 · 0 评论 -
二叉树的层次遍历
二叉树的层次遍历也叫广度优先遍历,用队列来实现:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<List<Integer>原创 2020-05-11 20:47:44 · 168 阅读 · 0 评论 -
计算字符串中有多少回文子串
判断回文串我们可以从中间向两边遍历:public static int isPalindrome(String s,int left,int right){ if(s==null) return 0; while(left>=0 && right<s.length() && s.charAt(left)==s.c...原创 2020-04-28 23:04:43 · 714 阅读 · 0 评论 -
LeeCode198:打家劫舍
题目:题解:动态规划的典型例子, 核心思路:小偷从左到右走过这一排房子,在每间房子前都有两种选择:抢或者不抢。假设小偷在某个房间,那么小偷现在就有两个选择,第一是偷这个房子以及这个房子隔壁的隔壁的房子,第二是不偷我现在所在的房子而偷隔壁的房子。class Solution { public int rob(int[] nums) { int len=nums.l...原创 2020-04-28 11:07:48 · 183 阅读 · 0 评论 -
LeeCode:删除链表的倒数第N个节点
题目:解法:双指针,先让一根指针走n+1步,再两根指针同时走直到快的指针指向null,慢的指针的next指向后面的后面那个元素。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x)...原创 2020-04-21 15:48:19 · 142 阅读 · 0 评论 -
链表中倒数第k个节点
题目:Java代码题解:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public L...原创 2020-04-20 23:22:06 · 110 阅读 · 0 评论 -
LeeCode题号2:两数之和
题目:解答 代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public Lis...原创 2020-04-20 00:07:36 · 120 阅读 · 0 评论