2022.03.19
打卡站住开始学习
3.19号 5h
* 链表(环形链表判断,边界问题)
public ListNode detectCycle(ListNode head) {
ListNode slow = head;
ListNode fast = head;
while(fast!=null && fast.next!=null){
slow = slow.next;
fast = fast.next.next;
if(slow == fast){
ListNode cur = slow;
ListNode pre = head;
while(pre != slow){
pre = pre.next;
cur = cur.next;
//边界问题 ,如果第一次pre==cur 存在问题
//if(pre == cur){
// return pre;
//}
}
return pre;
}
}
return null;
}
- 摆动序列
只是换了一种写法,想把结果打印出来,边界想的不清楚,搞了一个小时,最后还是按视频动画节奏来了
public int wiggleMaxLength(int[] nums) {
int len = nums.length;
if(len < 2){
return len;
}
List<Integer> res = new ArrayList<>();
Boolean state = null;
int i = 1;
res.add(nums[0]);
while(i<len){
if(state == null){
if(nums[i]>nums[i-1]){
state = true;
res.add(nums[i-1]);
}
if(nums[i]<nums[i-1]){
state = false;
res.add(nums[i]);
}
}else if(state){
if(nums[i]<nums[i-1]){
state = false;
res.add(nums[i]);
}
}else if (!state){
if(nums[i]>nums[i-1]){
state = true;
res.add(nums[i]);
}
}
i++;
}
return res.size();
}
- 计算右侧小于当前元素的个数