LeetCode72 移動零 第三大的數

2021-10-21 16:42:47 字數 1413 閱讀 5048

//給定乙個陣列 nums,編寫乙個函式將所有 0 移動到陣列的末尾,同時保持非零元素的相對順序。 

//// 示例:

//// 輸入: [0,1,0,3,12]

//輸出: [1,3,12,0,0]

//// 說明:

////

// 必須在原陣列上操作,不能拷貝額外的陣列。

// 儘量減少操作次數。

// // related topics 陣列 雙指標

有兩種方式來做這個題,一種是採用直接整個進行移動的策略,即發現乙個零,我們就將其移動到最後一位,然後把零的後一位到最後一位都往前移動一位,這種方法的時間複雜度太高了。

public void movezeroes(int nums) 

nums[n--] = 0;

i--;}}

}

還有就是雙指標的方式,左指標一直到右指標這中間的所有元素都保持為0.

class solution 

left++;}}

private void swap(int nums, int left, int right)

}

//給你乙個非空陣列,返回此陣列中 第三大的數 。如果不存在,則返回陣列中最大的數。 

////

//// 示例 1:

////

//輸入:[3, 2, 1]

//輸出:1

//解釋:第三大的數是 1 。

//// 示例 2:

////

//輸入:[1, 2]

//輸出:2

//解釋:第三大的數不存在, 所以返回最大的數 2 。

// //

// 示例 3:

////

//輸入:[2, 2, 3, 1]

//輸出:1

//解釋:注意,要求返回第三大的數,是指第三大且唯一出現的數。

//存在兩個值為2的數,它們都排第二。

// //

// //

////

// 1 <= nums.length <= 104

// -231 <= nums[i] <= 231 - 1

// //

// //

// 高階:你能設計乙個時間複雜度 o(n) 的解決方案嗎?

// related topics 陣列

在這裡就直接用排序之後 ,取倒數第三個非重複元素。

public int thirdmax(int nums) }}

return k < 3 ? nums[n-1] : -1;

}

Leetcode 72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...

leetcode 72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...

LeetCode72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r rorse rose 刪除 r rose ...