
Hash
zkhong07
这个作者很懒,什么都没留下…
展开
-
只出现一次的数字 --java 记录
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?利用hashset, 集合内没有的元素则添加,有的元素则删除最后剩余则为出现1次的数。class Solution { public int singleNumber(int[] nums) { ...原创 2019-09-05 19:21:15 · 116 阅读 · 0 评论 -
无重复字符的最长子串 --java记录
利用hashset, 集合中记录子串。 用时20+class Solution { public static int lengthOfLongestSubstring(String s) { HashSet<Character> set = new HashSet<Character>(); //key 为 字符,value为索引。 ...原创 2019-09-16 17:09:40 · 87 阅读 · 0 评论 -
寻找重复的子树 --java记录
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。利用hashmap,key存储子串字符, value 存储子串出现次数。class Solution { public List<TreeNode> findDuplicateSubtrees(TreeNode root) { ...原创 2019-09-12 20:00:55 · 274 阅读 · 0 评论 -
有效的数独 --java 记录
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。说明:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。给定数独序列只包含数字 1-9 和字符 ‘.’ 。给...原创 2019-09-12 16:28:19 · 147 阅读 · 0 评论 -
字母异位词分组 --java记录
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:将字符串排序,字符相同,则排序后就相同。利用hashmap,map的key为 字符串排序后的字符串,value为每存入一次map的索引。(例如: eat, 排序后存入 map。{key:aet,value:0.})同时将eat添加到list中,再将这个list添加到二维list中,value代表相同...原创 2019-09-11 20:49:05 · 167 阅读 · 0 评论 -
存在重复元素 II --java记录
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。第一印象还是采用双层遍历,效果很低下public boolean containsNearbyDuplicate(int[] nums, int k) { for(int i = 0; i < nums....原创 2019-09-11 19:15:09 · 196 阅读 · 0 评论 -
两个数组的交集 II --java记录
第一种 运用一个数组记录访问标识,然后遍历两个数组。 效率比较低下class Solution { public int[] intersect(int[] nums1, int[] nums2) { LinkedList <Integer> list = new LinkedList<Integer>(); int [] visted = new...原创 2019-09-10 22:16:00 · 118 阅读 · 0 评论 -
字符串中的第一个唯一字符 --java记录
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。学习完hashmap,利用map,key 为字符,value记录字符个数。 记录完后,遍历拿出第一个key为 1 的 下标。class Solution { public static int firstUniqChar(String s) { HashMap<Character,...原创 2019-09-08 18:18:06 · 290 阅读 · 0 评论 -
两个列表的最小索引总和 --java记录
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。用map 记录list1,key为字符串,value为对应索引。第二次遍历list 2.如果包含相同key 然后比较两索引和是否为最小,是则记录字符...原创 2019-09-08 15:48:36 · 176 阅读 · 0 评论 -
同构字符串 --java 记录
给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身利用hashmap 记录,将s 作为key t作为value 在map存储。 map 中 记录 s 和 t 是一一对应的,如果在后面存储 s-t,出现和map中s-...原创 2019-09-06 19:30:40 · 152 阅读 · 0 评论 -
快乐数 -- java 记录
编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。第一种解法:循环计算累加值,非快乐数在计算过程中会出现重复数字,遇到则判断未非快乐数。public static boolean isHappy(int n...原创 2019-09-06 16:53:21 · 364 阅读 · 0 评论 -
两个数组的交集 --java记录
给定两个数组,编写一个函数来计算它们的交集。用hashset,先将一个nums1保存到hashset1,然后将nums2 的元素与hashset1比较,存在的元素添加到hashset2中。import java.util.HashSet;public class Main{ public int[] intersection(int[] nums1, int[] nums2...原创 2019-09-05 20:13:08 · 128 阅读 · 0 评论 -
四数相加 II -- java记录
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1将ABCD 分为两组,AB 各值为一组,...原创 2019-09-16 17:55:04 · 158 阅读 · 0 评论