LeetCode1365有多少小於當前數字的數字
方法一:暴力
class Solution {
public int[] smallerNumbersThanCurrent(int[] nums) {
int n = nums.length;
int[] ret = new int[n];
for (int i = 0; i < n; i++) {
int cnt = 0;
for (int j = 0; j < n; j++) {
if (nums[j] < nums[i]) {
cnt++;
}
}
ret[i] = cnt;
}
return ret;
}
}
方法二:快速排序
我們也可以將陣列排序,並記錄每一個數在原陣列中的位置。對於排序後的陣列中的每一個數,我們找出其左側第一個小於它的數,這樣就能夠知道陣列中小於該數的數量。
class Solution {
public int[] smallerNumbersThanCurrent(int[] nums) {
int n = nums.length;
int[][] data = new int[n][2];
for (int i = 0; i < n; i++) {
data[i][0] = nums[i];
data[i][1] = i;
}
Arrays.sort(data, new Comparator<int[]>() {
public int compare(int[] data1, int[] data2) {
return data1[0] - data2[0];
}
});
int[] ret = new int[n];
int prev = -1;
for (int i = 0; i < n; i++) {
if (prev == -1 || data[i][0] != data[i - 1][0]) {
prev = i;
}
ret[data[i][1]] = prev;
}
return ret;
}
}
方法三:計數排序
注意到陣列元素的值域為 [0,100],所以可以考慮建立一個頻次陣列 cnt ,cnt[i] 表示數字 i 出現的次數。那麼對於數字 i 而言,小於它的數目就為 cnt[0…i-1] 的總和。
class Solution {
public int[] smallerNumbersThanCurrent(int[] nums) {
int[] cnt = new int[101];
int n = nums.length;
for (int i = 0; i < n; i++) {
cnt[nums[i]]++;
}
for (int i = 1; i <= 100; i++) {
cnt[i] += cnt[i - 1];
}
int[] ret = new int[n];
for (int i = 0; i < n; i++) {
ret[i] = nums[i] == 0 ? 0 : cnt[nums[i] - 1];
}
return ret;
}
}
相關文章
- LeetCode - 1365 - 有多少小於當前數字的數字LeetCode
- Leetcode 刷題 ------1365.有多少小於當前數字的數字LeetCode
- LeetCode刷題進階之有多少小於當前數字的數字(1365)(暴力求解)LeetCode
- 菜鳥扣程式碼第十五天:leetcode第1365題--有多少小於當前數字的數字LeetCode
- 利用爬蟲獲取當前博文數量與字數爬蟲
- SSL證書屬於數字證書嗎?數字證書有哪些
- 數字產業化是否快於產業數字化LN產業
- 缺失的數字;及找數字分析
- 當前重壓下的CIO該如何開展數字化建設工作
- 對陣列中的數字 1 和 2 進行排序,使得數字 1、2 分別位於前、後部分陣列排序
- 智慧數字經營引領下的數字企業有什麼特徵?特徵
- 找數字續;及缺失的數字分析
- poi匯出的excel的數字小數位過多?Excel
- 數字經濟質變之路 ——基於區塊鏈核心技術的當前瓶頸與突破展望區塊鏈
- 當一個數不是數字時:隨機測試生成器有哪些好處?隨機
- 數字經濟對於製造業數字化轉型影響的思考
- 給定數字生成中文數字(MySQL)MySql
- 關於oracle資料庫全形數字轉換半形數字方法Oracle資料庫
- 敏捷融入數字化,會對數字化轉型有推動力嗎?敏捷
- 中文數字與阿拉伯數字:數字符號的文化交融符號
- 數字店鋪的轉型,和智慧數字化經營平臺有何關聯?
- “數字資產創新探索計劃”上線 “數元”多模態數字資源綜合平臺
- 數字遊戲遊戲
- 數字加密加密
- 數字序列
- Python 英文的月份轉數字及數字轉英文Python
- 【數字化】重新思考數字化時代的製造業
- Oracle將小於1的數字to_char後,丟掉小數點前0的解決辦法Oracle
- 多幣種數字錢包開發及區塊鏈數字錢包系統區塊鏈
- 關於數字經濟時代的若干思考
- JavaScript中的數字JavaScript
- 中文數字阿拉伯數字相互轉換
- 數字格式字串轉數字保留後面0字串
- jquery金額數字轉為大寫數字jQuery
- SSL數字證書是什麼?SSL數字證書具體有什麼作用?
- 數字證書不僅有SSL證書,數字證書型別科普大全型別
- 數字藏品商城系統有哪些功能
- oracle 一欄位 資料存在數字和漢字,只提取數字的sqlOracleSQL