力扣Hot100刷题

112 阅读1分钟

1 两数之和

package org.study.Hot100;

import java.util.HashMap;
import java.util.Map;

public class T1 {
    public static int[] twoSum(int[] nums, int target) {
        int []  res=new int[2];
        Map<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;i++){
            if(map.containsKey(target-nums[i])){
                res[0]=i;
                res[1]=map.get(target-nums[i]);
                return res;
            }
            map.put(nums[i],i);
        }
        return null;
    }

    public static void main(String[] args) {
        int[] nums={3,3};
        int target=6;
        System.out.println(twoSum(nums,target)[0]);
        System.out.println(twoSum(nums,target)[1]);

    }
}

21 合并两个有序链表

package org.study.Hot100;

public class T21 {
    public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if(list1==null) return list2;
        if(list2==null) return list1;
        ListNode head = new ListNode();
        ListNode tail = new ListNode();
        head.next=tail;
        tail.val= list1.val<list2.val?list1.val:list2.val;
        while (list1!=null && list2!=null){
            if(list1.val<list2.val){
                tail.next=new ListNode(list1.val);
                tail=tail.next;
                list1=list1.next;
            }else{
                tail.next=new ListNode(list2.val);
                tail=tail.next;
                list2=list2.next;
            }
        }
        while (list1!=null){
            tail.next=new ListNode(list1.val);
            tail=tail.next;
            list1=list1.next;
        }
        while (list2!=null){
            tail.next=new ListNode(list2.val);
            tail=tail.next;
            list2=list2.next;
        }
        return head.next.next;
    }

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode l2 = new ListNode(2);
        ListNode l3 = new ListNode(4);
        l1.next=l2;
        l2.next=l3;
        l3.next=null;

        ListNode l4 = new ListNode(1);
        ListNode l5 = new ListNode(3);
        ListNode l6 = new ListNode(4);
        l4.next=l5;
        l5.next=l6;
        l6.next=null;

        ListNode a= mergeTwoLists(l1,l4);
        while (a!=null){
            System.out.println(a.val);
            a=a.next;
        }
    }
}

136 只出现一次的数字

package org.study.Hot100;

public class T136 {
    public static int singleNumber(int[] nums) {
//        List<Integer> list=new ArrayList<>();
//        for(int i=0;i<nums.length;i++){
//            if(!list.contains(nums[i])){
//                list.add(nums[i]);
//            }
//            else{
//                list.remove((Integer)nums[i]);
//            }
//        }
//        return list.get(0);
        int ans=nums[0];
        for(int i=1;i<nums.length;i++){
            ans^=nums[i];
        }
        return ans;
    }
    public static void main(String[] args) {
        int[] nums={4,1,2,1,2};
        System.out.println(singleNumber(nums));
    }
}

169 多数元素

package org.study.Hot100;

import java.util.HashMap;
import java.util.Map;

public class T169{
    public static int majorityElement(int[] nums) {
        int len=nums.length/2;
        Map<Integer,Integer> map=new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(nums[i])){
                map.put(nums[i],map.get(nums[i])+1);
                if(map.get(nums[i])>len){
                    return nums[i];
                }
            }else{
                map.put(nums[i],1);
            }
        }
        if(map.size()==1){
            return nums[0];
        }
        return len;
    }

    public static void main(String[] args) {
        int[] nums={3};
        System.out.println(majorityElement(nums));
    }
}

206 反转链表

package org.study.Hot100;

public class T206{
    public static ListNode reverseList(ListNode head) {
        if (head==null) return null;
        ListNode newhead=new ListNode();
        newhead.next=null;
        while (head!=null){
            ListNode temp=new ListNode(head.val);
            temp.next=newhead.next;
            newhead.next=temp;
            head=head.next;
        }
        return newhead.next;
    }
    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode l2 = new ListNode(2);
        ListNode l3 = new ListNode(3);
        ListNode l4 = new ListNode(4);
        ListNode l5 = new ListNode(5);
        l1.next=l2;
        l2.next=l3;
        l3.next=l4;
        l4.next=l5;
        l5.next=null;

        ListNode a= reverseList(l1);
        while (a!=null){
            System.out.println(a.val);
            a=a.next;
        }
    }

}

448 找到所有数组中消失的数字

package org.study.Hot100;

import java.util.ArrayList;
import java.util.List;

public class T448 {
    public static List<Integer> findDisappearedNumbers(int[] nums) {

        int n=nums.length;
        int[] a=new int[n];
        List<Integer> res = new ArrayList<Integer>();
        for(int i=0;i<n;i++)
        {
            a[nums[i]-1]+=1;
        }
        for (int i = 0; i < n; i++) {
            if(a[i]==0){
                res.add(i+1);
            }
        }
        return res;
    }
    public static void main(String[] args) {
        int[] nums={4,3,2,7,8,2,3,1};
        System.out.println(findDisappearedNumbers(nums));
    }
}