第一题 508. Most Frequent Subtree Sum
题目描述
给定一棵二叉树,求其最频繁子树和。即所有子树的和中,出现次数最多的数字。如果存在多个次数一样的子树和,则全部返回。
算法
利用hashmap将相同的sum值进行存储和记录,然后利用前序遍历对整个树进行一遍遍历,存储下所有的字数的sum值。最后再进行统计
学到的东西
- 注意下树的前序中序后序遍历是怎么遍历的。
- 另外List 转为Array 的 int[] result = list.toArray(new int[list.size()])是无法对int形使用的,只能对Integer型
第二题 389. Find the Difference
题目描述
给定两个字符串s和t,都只包含小写字母。
字符串t由字符串s打乱顺序并且额外在随机位置添加一个字母组成。
寻找t中新增的那个字母。
测试用例如题目描述。
算法
与在一个Array中找出不重复的数字算法相同, 利用亦或运算,相同的最后亦或之后最终会变为0,只会留下不同的那一个
第三题 451. Sort Characters By Frequency
题目描述
给定一个字符串,将字符按照出现次数从高到低排序。
算法
用HashMap记录下每个字母和起出现次数,然后最后排序后打印出来。
学到的东西
如何对一个HashMap根据其Value排序
第四题 311. Sparse Matrix Multiplication
算法
对应每个位置相乘
第五题 599. Minimum Index Sum of Two Lists
题目描述
求两个字符串列表中索引之和最小的公共串
注意:
列表长度范围[1, 1000]
字符串长度[1, 30]
下标范围[0, len - 1]
列表内无重复
算法
利用HashMap存储出现过的数, 然后之后用List存储所有的结果。
第六题 347. Top K Frequent Elements
题目描述
给定一个非空整数数组,返回其前k个出现次数最多的元素。
测试用例如题目描述。
注意:
你可以假设k总是有效的,1 ≤ k ≤ 独立元素的个数。
你的算法时间复杂度必须优于O(n log n),其中n是数组的长度。
算法
利用HashMap存储频率,但是有个很巧妙的解决排序问题。可以利用一个数组长度的List数组来存储频率,由于需要输出前k个,那么最后从list数组从后向前输出即可。
第七题 349. Intersection of Two Arrays
题目描述
给定两个数组,编写函数计算它们的交集。
测试用例如题目描述。
注意:
结果中的每个元素一定是唯一的。
结果可以采用任意顺序。
算法
三种算法:
- 可以使用Set用数据进行存储
- 如果两个Array都是有序的,可以利用两个指针进行推进
- 如果有一个有序,可以利用二分查找12345678910111213141516171819public class Solution {public int[] intersection(int[] nums1, int[] nums2) {if (nums1 == null || nums2 == null) return new int[0];Set<Integer> set = new HashSet<>();for (int num : nums1) set.add(num);List<Integer> res = new ArrayList<>();for (int num : nums2) {if (set.contains(num) && !res.contains(num)) res.add(num);}int[] result = new int[res.size()];for (int i = 0; i < result.length; i++) {result[i] = res.get(i);}return result;}}
第八题 359. Intersection of Two Arrays II
算法
与之前类似,只不过现在使用一个Hashmap对数字进行存储
第九题 237. Delete Node in a Linked List
题目描述
编写一个函数删除单链表中(除末尾节点外)的一个节点,只提供待删除节点。
假如链表是1 -> 2 -> 3 -> 4 给你第3个节点,值为3,则调用你的函数后链表为1 -> 2 -> 4
算法
忽然想起来这道题在很久以前找实习的时候遇到过,当时没有做出来,希望经过自己的努力,会有慢慢的提高吧。
第十题 206. Reverse Linked List
题目描述
单链表逆置
提示:
用递归和迭代方式分别实现。
算法
iterative
|
|
recursive
|
|
学到的东西
LinkedList的入门知识,自己多梳理一遍,回忆一下。