剑指 Offer 52. 两个链表的第一个公共节点
题目
思路
代码
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode node1=headA;
ListNode node2=headB;
while(node1!=node2){
node1= node1!=null? node1.next:headB;
node2= node2!=null? node2.next:headA;
}
return node1;
}
}
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
node1,node2=headA,headB
while node1!=node2:
node1=node1.next if node1 else headB
node2=node2.next if node2 else headA
return node1
剑指 Offer 53 - I. 在排序数组中查找数字 I
题目
代码(二分查找)
class Solution {
public int search(int[] nums, int target) {
if(nums==null) return 0;
int i=0,j=nums.length-1;
while(i<=j){
int m=(i+j)/2;
if(nums[m]<=target) i=m+1;
else j=m-1;
}
int right=j;
if(j>=0&&nums[right]!=target) return 0;
int a=0,b=nums.length-1;
while(a<=b){
int m=(a+b)/2;
if(nums[m]<target) a=m+1;
else b=m-1;
}
int left=b;
return right-left;
}
}
class Solution:
def search(self, nums: List[int], target: int) -> int:
if nums==None: return 0
i,j=0,len(nums)-1
while i<=j:
m=(i+j)//2
if nums[m]<= target:i=m+1
else:j=m-1
right=j
if j>=0 and nums[j]!=target: return 0
a,b=0,len(nums)-1
while a<=b:
m=(a+b)//2
if nums[m]< target:a=m+1
else: b=m-1
left=b
return right-left
剑指 Offer 53 - II. 0~n-1中缺失的数字
题目(二分查找)
代码
class Solution {
public int missingNumber(int[] nums) {
int i=0,j=nums.length-1;
while(i<=j){
int m=(i+j)/2;
if(nums[m]==m) i=m+1;
else j=m-1;
}
return i;
}
}
class Solution:
def missingNumber(self, nums: List[int]) -> int:
i,j=0,len(nums)-1
while i<=j:
m=(i+j)//2
if nums[m]==m: i=m+1
else:j=m-1
return i