給你乙個非負整數陣列 nums 。如果存在乙個數 x ,使得 nums 中恰好有 x 個元素 大於或者等於 x ,那麼就稱 nums 是乙個 特殊陣列 ,而 x 是該陣列的 特徵值 。
注意: x 不必 是 nums 的中的元素。
如果陣列 nums 是乙個 特殊陣列 ,請返回它的特徵值 x 。否則,返回 -1 。可以證明的是,如果 nums 是特殊陣列,那麼其特徵值 x 是 唯一的 。
示例 1:
輸入:nums = [3,5]
輸出:2
解釋:有 2 個元素(3 和 5)大於或等於 2 。
示例 2:
輸入:nums = [0,0]
輸出:-1
解釋:沒有滿足題目要求的特殊陣列,故而也不存在特徵值 x 。
如果 x = 0,應該有 0 個元素 >= x,但實際有 2 個。
如果 x = 1,應該有 1 個元素 >= x,但實際有 0 個。
如果 x = 2,應該有 2 個元素 >= x,但實際有 0 個。
x 不能取更大的值,因為 nums 中只有兩個元素。
示例 3:
輸入:nums = [0,4,3,0,4]
輸出:3
解釋:有 3 個元素大於或等於 3 。
示例 4:
輸入:nums = [3,6,7,7,0]
輸出:-1
1 <= nums.length <= 100
0 <= nums[i] <= 1000
排序
class solution:def specialarray(self, nums: list[int]) ->int:
nums.sort()
for i in range(0,nums[-1]+1):
for j in
range(len(nums)):
if j==0 and nums[0]>=i:
if i==len(nums):
return
i
else
:
break
if j>0 and nums[j]>=i and nums[j-1]if i==len(nums)-j:
return
i
return -1
字尾和
classsolution:
def specialarray(self, nums: list[int]) ->int:
n=len(nums)
cnt=[0]*(n+1)
for i in
nums:
cnt[min(i,n)]+=1
for i in range(n,-1,-1):
if icnt[i]+=cnt[i+1]
if cnt[i]==i:
return
i
return -1
特徵值 特殊矩陣的特徵值和特徵向量
特徵值與特徵向量 2 前 言 1 今天我們來討論一類特殊矩陣的特徵值和特徵向量。秩1 矩陣的性質希望同學們還沒有完全遺忘,正好通過今天的內容帶著大家複習下。2 i 雖然今天的矩陣不是抽象矩陣,但是想通過定義法求特徵值較為麻煩。這裡我們需要做乙個轉換 ax 0有非零解說明0是a的特徵值。ii 這裡我們...
特徵值 特徵值和特徵向量的應用問題
抽象矩陣的特徵值與特徵向量 前言 1 今天繼續接著昨天的內容,我們來討論特徵值和特徵向量的應用問題。今天這道題是抽象矩陣問題,需要我們對抽象條件做乙個合理的翻譯。2 行和相等的矩陣有什麼特殊的特徵值和特徵向量?行和是乙個特徵值,全1 向量是它對應的乙個特徵向量。這是乙個常用結論,希望同學們熟練掌握。...
特徵值 特徵值 特徵子空間和秩
矩陣的秩和它的特徵值有什麼關係呢?假設我得到了乙個矩陣的特徵值,如何根據特徵值推斷它的秩呢?我們知道,矩陣的秩代表維數,矩陣的特徵值有幾何重數和代數重數之分,其中幾何重數代表著該特徵值對應的特徵向量構成的空間 即特徵子空間 的維數,也就是在這個空間裡的所有向量經過矩陣變換 a 都不改變方向,只改變大...