美文网首页
和为s的两个数 & 和为s的连续的数

和为s的两个数 & 和为s的连续的数

作者: 稀饭粥95 | 来源:发表于2018-08-15 10:41 被阅读5次

和为s的两个数

要求数组要排序

public class Main{
    class Point{
        int x;
        int y;
        Point(int x1,int y1){
            x=x1;
            y=y1;
        }
        void print(){
            System.out.println(x+" "+y);
        }
    }
    public Point twoNumberSum(int []a,int sum){
        int i=0;
        int j= a.length-1;
        while(i<j){
            if((a[i]+a[j])==sum){
                System.out.println(a[i]+" "+a[j]);
                return new Point(a[i],a[j]);
            }else if((a[i]+a[j])>sum){
                j--;
            }else{
                i++;
            }
        }
        return null;
    }
    
    public static void main(String... arg) {
        Main main  = new Main();
        main.twoNumberSum(new int[]{1,2,5,7,9}, 7);
        
    }
}

和为s的连续的正整数

小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!

import java.util.ArrayList;
public class Solution {
    ArrayList<ArrayList<Integer> > list = new ArrayList<ArrayList<Integer>>();
    
    public void numberSeqSum(int sum){
        if(sum==0) System.out.println("no");
        int small = 1;
        int big = 2;
        int mid = (sum+1)/2;//至少两个数
        int total = small+big;
        while(small<mid&&small<big){
            if(total==sum){
                ArrayList<Integer> l = new ArrayList<Integer>();
                for(int i=small;i<=big;i++){
                    l.add(i);
                }
                list.add(l);
                //System.out.println(small+" "+big);
                big++;
                total = total+big;
            }else if(total < sum){
                big++;
                total = total + big;
            }else{
                total = total - small;
                small++;
            }
        }
        
    }
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
       if(sum==1||sum==2) return list;
       numberSeqSum(sum);
       return list;
    }
}

删除链表中重复的结点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

public class Solution {
     public ListNode deleteDuplication(ListNode pHead)
    {
         ListNode p = new ListNode(123);
         p.next=pHead;
         ListNode head = pHead;
         ListNode last = p;
         while(head!=null){
             if(head.next!=null&&head.val!=head.next.val){
                 last = head;
                 head = head.next;
             }else if(head.next==null){
                 break;
             }else{
                 while(head.next!=null&&head.val==head.next.val){
                     head = head.next;
                 }
                 last.next=head.next;
                 head = head.next ;
             }
         }
         return p.next;
    }
}

相关文章

  • 和为s的两个数 & 和为s的连续的数

    和为s的两个数 要求数组要排序 和为s的连续的正整数 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的...

  • 和为S的两个数

    问题描述给出一个递增数组和一个目标值s,找出和为s的两个数问题解法定义两个指针start,end,分别指向头与尾。...

  • 和为S的两个数

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

  • 41、和为s的两个数字VS和为s的连续正数序列

    和为s的两个数字 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和...

  • 面试题57_2:和为S的连续正数序列

    和为s的连续正数序列 输入一个正数s,打印出所有何为s的连续正数序列(至少含有两个数)。 例如输入15,由于1+2...

  • 和为S的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数...

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,...

  • 和为S的两个数字

    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数...

  • 和为S的两个数字

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,...

网友评论

      本文标题:和为s的两个数 & 和为s的连续的数

      本文链接:https://www.haomeiwen.com/subject/kayibftx.html