力扣刷題記錄01

2021-10-24 08:55:15 字數 1739 閱讀 6533

題目分類 :陣列

時間 :2020-09-25

給定乙個矩陣 a, 返回 a 的轉置矩陣。

矩陣的轉置是指將矩陣的主對角線翻轉,交換矩陣的行索引與列索引 示例

輸入:[[1,2,3],[4,5,6],[7,8,9]]

輸出:[[1,4,7],[2,5,8],[3,6,9]]

輸入:[[1,2,3],[4,5,6]]

輸出:[[1,4],[2,5],[3,6]]

思路 :

1. 抽取矩陣的行數和列數,即外圍陣列的長度和子陣列的長度

2. 從每一列中抽取同一位置的數字,生成新矩陣的新的一行

**如下

var transpose = function (a) 

resultarr.push(arr);

}return resultarr

}

陣列中佔比超過一半的元素稱之為主要元素。給定乙個整數陣列,找到它的主要元素。若沒有,返回-1。 示例

輸入:[1,2,5,9,5,9,5,5,5]

輸出:5

輸入:[3,2]

輸出:-1

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

輸出:2

思路

使用雜湊表,將元素名作為物件元素的鍵名存入物件,可在遍歷的同時快速查詢、記錄和更新該元素出現的次數,在一次遍歷中得出結果。

**如下 :

var majorityelement = function (nums) ;

for (let i = 0; i < nums.length; i++)

}else

}return -1;

};

給定乙個按非遞減順序排序的整數陣列 a,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。

示例 1:

輸入:[-4,-1,0,3,10]

輸出:[0,1,9,16,100]

輸入:[-7,-3,2,3,11]

輸出:[4,9,9,49,121]

思路

1.進行平方運算,生成新陣列以後,直接使用js函式庫自帶的sort()方法進行排序。

var sortedsquares = function (a) 

let resultarr = newarr.sort((a,b) => a-b)

return resultarr;

};

這種辦法雖然簡單實用,運算時間在力扣的評價也很優秀,但用自帶函式庫進行排序就達不到訓練的效果了。

2.暴力排序

簡單直接但低效,力扣判定會超時。

3.氣泡排序

通過不斷比較相鄰的元素,若右側元素的值比左側小,則將兩個數值替換,直到逼近陣列末尾的方法,將最大值排到了最右側。

var sortedsquares = function (a) 

for (let i = 0; i < newarr.length; i++) }}

return newarr;

}

力扣刷題記錄05

題目分類 二分查詢 時間 2020 09 09 題目一 兩數之和 兩數之和 ii 輸入有序陣列 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 ind...

力扣刷題記錄2

第一題是每日一題的簡單題。需要記的並不多,一是用迭代器對vector的一些基本操作。可以參考這裡 for vector iterator iter num.begin iter num.end iter 另外是快排的思想。這種思想實用性很廣,即使不需要排序,在找出最大的k個數,對陣列進行分割 以中間...

力扣刷題記錄10

三角形的最大周長 看到這個題目,我想到了排序後從最大的中挑選,但遇到了點困難,一方面是無法記錄哪個是最大的點,這樣每次都要判斷。另一方面是根據題目要求,每個數只能用一次,要記錄下當前哪些是已經被使用了的。看到題解之後感覺自己是個智障。class solution return0 下次貪心時候也要動動...