首页 > 编程语言 > 详细

Java--剑指offer(8)

时间:2016-09-01 10:41:48      阅读:110      评论:0      收藏:0      [点我收藏+]

36.输入两个链表,找出它们的第一个公共结点。

  解题思路:这里主要是把两个链表的节点都放入两个栈中,这样就可以按照出栈的方式来比较节点,因为单链表只要是有相同的节点,那么之后的节点也都是一样的,所以如果出栈的节点不相同的话就可以返回之前保存的commonNode变量,这么变量的值就是第一个共同的节点。

import java.util.Stack;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/

public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1 == null || pHead2 == null)
            return null;
        
        ListNode commonNode = null;
        Stack<ListNode> s1 = new Stack<ListNode>();
        Stack<ListNode> s2 = new Stack<ListNode>();
        
        s1.push(pHead1);
        s2.push(pHead2);
        
        ListNode p1 = pHead1;
        ListNode p2 = pHead2;
        while(p1.next != null){
            s1.push(p1.next);
            p1 = p1.next;
        }
        while(p2.next != null){
            s2.push(p2.next);
            p2 = p2.next;
        }
        while(s1.peek() == s2.peek()){
            commonNode = s1.peek();
            if(s1.peek() != null)
                s1.pop();
            if(s2.peek() != null)
                s2.pop();
            //如果s1或者s2为空就直接跳出循环
            if(s1.empty() || s2.empty())
                break;
        } 
        
        
        return commonNode;
    }
}

 

37.统计一个数字在排序数组中出现的次数。

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        int len = array.length;
        int first = -1;
        int last = -1;
        int num = 0;
        
        for(int i = 0; i < len; i++){
            if(array[i] == k){
                first = i;
                break;
            }
        }
        for(int i = len-1; i >= 0; i--){
            if(array[i] == k){
                last = i;
                break;
            }
        }
        
        //如果first和last为-1的话,证明数组中没有和k相同的
        if(first != -1 && last != -1){
            num = last - first +1;
        } else{
            num = 0;
        }
        
        return num;
    }
}

 

Java--剑指offer(8)

原文:http://www.cnblogs.com/wgl1995/p/5828432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!