leetcode第二天刷題

2021-09-26 14:13:15 字數 895 閱讀 6794

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。

請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。

你可以假設 nums1 和 nums2 不會同時為空

看到這個題目第乙個想法就是用直接合併兩個陣列然後取中位數的方法。

要注意的就是幾個陣列為空的情況需要考慮進去

public double findmediansortedarrays(int nums1, int nums2)  else 

}if (b == 0) else

}//討論當兩個陣列其中乙個為空的情況

int count = 0;

int i = 0, j = 0;

while (count != (a + b))

break;

}if (j == b)

break;

}//當一組數被排列完後

if (nums1[i] < nums2[j]) else

}if (count % 2 == 0) else

}

但是這個不符合我們對複雜度的要求,所以我看了其他大佬的解答,看見一種有趣的思路就是,取中位數就是找到第k/2小的數這樣子我們可以通過不斷排除比k/2還小的數來達到目的。附上大佬的解法

public double findmediansortedarrays(int nums1, int nums2) //將奇數偶數情況統一起來

private int getkth(int nums1, int start1, int end1, int nums2, int start2, int end2, int k)

else

}

力扣刷題第二天

給你乙個陣列 candies 和乙個整數 extracandies 其中 candies i 代表第 i 個孩子擁有的糖果數目。對每乙個孩子,檢查是否存在一種方案,將額外的 extracandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意,允許有多個孩子同時擁有 最多 的糖果數目。示例...

牛客刷題總結(第二天)

int a 5 int ptr int a 1 a 代表的是int 每次步長為乙個int a 代表的是 int 每次步長為所指向的陣列的大小 此時ptr指向陣列a最後乙個位置的下乙個位置 vector erase以後,itor已經指向下乙個元素了,不應該執行itor 任何型別指標都可以賦值給void...

課上洛谷刷題第二天

今天,主講老師有事去了,換了個代課老師來上課。但是有些同學這就開始八卦了起來 本來這個班的主講老師並不是現在的主講老師的,可是原來的主講老師有事,找了個代課老師來上課。第二節課,同學們依然沒有見到他們的主講老師,代課老師說他去談戀愛不知道幹嘛了,自己就變成了主教 老師。而這節課主教老師又有事去了,會...