定个专题

定个小目标之刷LeetCode热题(22)

这道题最容易想的就是排序后再遍历,但是时间复杂度就不是O(n)了,所以还是得用更优的解法,直接看题解,它是使用了HashSet,遍历数组,对于每一个数x,如果不存在x - 1则进入内循环,否则跳过,内循环里就是依次查看x+1、x+2、x+3、......是否存在,并维护一个变量currentStreak来记录连续数字的长度,维护一个longestStreak变量来记录出现最长的连续数字的长度,

定个小目标之刷LeetCode热题(21)

这是道技巧题,利用了 (num - 1)% n 计算下标的形式来将数组元素与数组索引产生映射关系,代码如下,可以看下注释 class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {int n = nums.length;for (int num : nums) {// 利用哈希表原理计算元素下标,从题意可

定个小目标之刷LeetCode热题(20)

这题与上一题有一点不同,上一题是判断链表是否存在环,这题是寻找入环的第一个节点,有一个规则是这样的,在存在环的情况下,运用快慢指针判断是否有环结束时,把快指针指向头结点,慢指针不变,然后循环快慢指针每次只走一步,最终会在入环的第一个节点相遇,代码如下 public class Solution {public ListNode detectCycle(ListNode head) {if (

定个小目标之刷LeetCode热题(15)

这道题直接就采用两数相加的规则,维护一个进阶值(n)即可,代码如下 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {// 新建一个值为0的头结点ListNode newHead = new ListNode(0);// 创建几个指针用于遍历链表ListNode p = l1, q = l

定个小目标之每天刷LeetCode热题(7)

今天这道题是道简单题,使用双指针进行迭代即可,画了下草图如下 代码如下 class Solution {public ListNode reverseList(ListNode head) {if (head == null || head.next == null) {return head;}ListNode p = head, q = head.next, temp = nu

定个小目标之每天刷LeetCode热题(3)

这是一道简单题,我这里就只讲两种解法 第一种是数组加双指针,先遍历链表将值存到数组里,然后分别从数组两端进行一一比较判断是否满足回文,代码实现 class Solution {public boolean isPalindrome(ListNode head) {List<Integer> vals = new ArrayList<Integer>();// 将链表的值复制到数组中Li

定个小目标之每天刷LeetCode热题(1)

有两种解决方法: 第一种:利用哈希集合不重复的特性,代码展示如下 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {Set<ListNode> listNode = new HashSet<ListNode>();ListNode p = headA;whi

给自己定个目标,向阿里p7前进

记录自己的学习心得,准备从下列方面着手: 1 并发编程 2 开源框架的源码,及其内部实现 3 常用的前端框架 4 了解Docker与Hadoop 5 熟悉hbase的使用

定个目标

从今天起,给自己在技术层面上定个目标,有朝一日可以成为阿里的P7 1. 扎实的Java编程基础,熟练掌握Java EE体系结构,有大型Web应用开发经验者优先,精通Java EE、SOA、OSGI等相关技术;   2. 精通OOA/D、领域驱动设计,能熟练使用UML工具;  3. 熟悉数据库Oracle和Mysql,有NoSQL(如HBase)、缓存技术经验优先, 三年以上大规模高并