leetcode—哈希表
akun+
~
展开
-
哈希表——克隆图
一、深度优先Java:/*// Definition for a Node.class Node { public int val; public List<Node> neighbors; public Node() { val = 0; neighbors = new ArrayList<Node>(); } public Node(int _val) { val = _va..原创 2021-08-09 16:34:23 · 72 阅读 · 0 评论 -
哈希表——由中序和后序序列构建二叉树
后序序列最后一个就是根节点,再在中序序列中定位根节点.......一、递归法Java:这里要把两个数组和postRight定义为成员变量,这样就不用一直传参了。如果当作参数传递的话,会超出时间限制。C++需要定义数组的时候需要指明大小,所以这里c++数组还是当参数传递的。 注意:要先构建右子树,再构建左子树,原因我也没太理解........./** * Definition for a binary tree node. * public class TreeNode { * ..原创 2021-08-06 21:39:33 · 212 阅读 · 0 评论 -
哈希表——由前序和中序序列构造二叉树
两种方法:一、递归有先序序列得到根节点的值,创建根节点,再递归构造左子树,右子树。 由先序得到根结点,再在中序序列找到根节点,根节点左边就是左子树,右边就是右子树。在中序序列中找根节点,就可以用到哈希结构,这里是想得到她的坐标,所以value存坐标。Java:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ..原创 2021-08-06 10:55:10 · 167 阅读 · 0 评论 -
哈希表——矩阵置零
原地算法:就是不新创建矩阵空间,在原有矩阵上进行修改,得到结果矩阵。一、可以用两个一维数组,分别存储哪一行哪一列有元素0,然后置0即可,使用了O(m+n)的空间.二、使用两个布尔类型变量存储0行和0列是否有元素0,然后用0行存储每一列(除0列)是否有0,0列存储每一行(除0行)是否有0。再从[1][1]开始依次赋值除0行0列的元素,最后再通过变量值来给0行0列赋值。Java:class Solution { public void setZeroes(int[][] m...原创 2021-08-05 11:42:14 · 220 阅读 · 0 评论 -
哈希表——字母异位词分组
解析:排序作为key,然后将value加到map中。Java:class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String,List<String>> map=new HashMap<String,List<String>>(); for(String str:strs)...原创 2021-08-03 20:56:54 · 118 阅读 · 0 评论 -
哈希表——有效的数独
两者存储方式,用数组 或者 数组与哈希表结合来存储。一、数组用三个9*9数组,存储81个状态,以num=board[i][j]-'1'为另一维索引,即以表中的数字为索引。Java:class Solution { public boolean isValidSudoku(char[][] board) { boolean[][] row=new boolean[9][9]; boolean[][] column=new boolean[9]...原创 2021-08-03 17:40:26 · 190 阅读 · 0 评论