1608 特殊陣列的特徵值

2022-05-13 08:07:33 字數 1509 閱讀 7132

給你乙個非負整數陣列 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

字尾和

class

solution:

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 都不改變方向,只改變大...