题目一
解法
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isBalanced(TreeNode root) {
if(root==null) return true;
return Math.abs(method(root.left)-method(root.right))<=1&&isBalanced(root.left)&&isBalanced(root.right);
}
public int method(TreeNode root){
if(root==null) return 0;
return Math.max(method(root.left),method(root.right))+1;
}
}
题目二
解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
ListNode node1 = new ListNode(-1);
ListNode node2 = node1;
while(list1!=null&&list2!=null){
if(list1.val<=list2.val){
node1.next = list1;
list1 = list1.next;
}else{
node1.next = list2;
list2 = list2.next;
}
node1 = node1.next;
}
if(list1==null){
node1.next = list2;
}
if(list2==null){
node1.next = list1;
}
return node2.next;
}
}
题目三
解法一
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode ans = head;
if(head==null) return null;
if(head.next==null) return head;
while(head!=null){
if(head.next.next==null){
if(head.val==head.next.val){
head.next = null;
}
break;
}else{
if(head.val==head.next.val){
head.next = head.next.next;
}else{
head = head.next;
}
}
}
return ans;
}
}
解法二
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode temp = new ListNode(-101);
temp.next = head;
ListNode ans = temp;
while(temp.next!=null){
if(temp.val==temp.next.val){
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return ans.next;
}
}
题目四
解法
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public boolean hasCycle(ListNode head) {
Set<ListNode> seen = new HashSet<ListNode>();
while (head != null) {
if (!seen.add(head)) {
return true;
}
head = head.next;
}
return false;
}
}
题目五
解法
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if (headA == null || headB == null) {
return null;
}
ListNode node1 = headA;
ListNode node2 = headB;
while(node1!=node2){
if(node1==null){
node1 = headB;
}else{
node1 = node1.next;
}
if(node2==null){
node2 = headA;
}else{
node2 = node2.next;
}
}
return node1;
}
}