面试常考算法2(核心+acm模式)

15. 三数之和

核心代码模式
class Solution {
    public List> threeSum(int[] nums) {
        List> ans=new ArrayList<>();
        Arrays.sort(nums);
        int len=nums.length;
        int pre=2000000;
        for(int i=0;i0)k--;
            else{  //加入结果
                ans.add(Arrays.asList(nums[i],nums[j],nums[k]));
                while(j
手写输入输出
import java.util.*;

public class Javaacm
{
//输入格式
// [-1,0,1,2,-1,-4]
  public static void main(String []args)
  {
     Scanner scanner=new Scanner(System.in);
    String s=scanner.next();
    String str[]=s.substring(1,s.length()-1).split(",");
    int len=str.length;
    int nums[]=new int[len];
    for(int i=0;i> ans=new ArrayList<>();
    int pre=2000000;
    for(int i=0;i0)k--;
        else{
          ans.add(Arrays.asList(nums[i],nums[j],nums[k]));
          while(j cur:ans)
    {
      System.out.println("["+cur.get(0)+","+cur.get(1)+","+cur.get(2)+"]");
    }
// [-1,-1,2]
// [-1,0,1]
   }
}

53. 最大子数组和

核心代码模式
class Solution {
    public int maxSubArray(int[] nums) {
//在线处理算法
        int sum=0,ans=-100000;
        int len=nums.length;
        for(int i=0;i
手写输入输出
import java.util.*;

public class Javaacm
{
//输入格式
//[-2,1,-3,4,-1,2,1,-5,4]
  public static void main(String []args)
  {
     Scanner scanner=new Scanner(System.in);
    String s=scanner.next();
    String str[]=s.substring(1,s.length()-1).split(",");
    int len=str.length;
    int nums[]=new int[len];
    for(int i=0;i

21. 合并两个有序链表

核心代码模式
/**
 * 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 hh=new ListNode(),p=hh;
      while(list1!=null&&list2!=null)
      {
        if(list1.val
手写输入输出
import java.util.*;

class ListNode
{
  int val;
  ListNode next;
  ListNode(){}
  ListNode(String val){this.val=Integer.valueOf(val);}
  ListNode(int val,ListNode next){
    this.val=val;this.next=next;
  }
}
public class Javaacm
{
//输入格式
// [1,2,4]
// [1,3,4]
  public static void main(String []args)
  {
     Scanner scanner=new Scanner(System.in);
    String s=scanner.next();
    String str1[]=s.substring(1,s.length()-1).split(",");
    s=scanner.next();
    String str2[]=s.substring(1,s.length()-1).split(",");
    ListNode list1=new ListNode(str1[0]);
    ListNode list2=new ListNode(str2[0]);
    ListNode p=list1;
    for(int i=1;i");
      p=p.next;
    }
    System.out.print("null");
    //1->1->2->3->4->4->null
   }
   
}

5. 最长回文子串

核心代码模式
class Solution {
    int len;
    String s;
    public String longestPalindrome(String str) {
        len=str.length();
        s=str;
        int []ans=new int[]{1,0};
        for(int i=0;itwo[0]?one:two;
            if(ans[0]=0&&j
手写输入输出
import java.util.*;

public class Javaacm
{
//输入格式
//babad
  static String s;
  public static void main(String []args)
  {
     Scanner scanner=new Scanner(System.in);
     s=scanner.next();
     int len=s.length();
     int ans[]=new int[]{1,0};
     for(int i=0;i=0&&r

你可能感兴趣的:(面试,算法,面试,leetcode)