euisblue
1365. How Many Numbers Are Smaller Than the Current Number

C++

1/* 2 * Runtime: 48 ms, faster than 39.04% 3 * Memory Usage: 10.4 MB, less than 74.17% 4 */ 5 6class Solution { 7 public: 8 vector<int> smallerNumbersThanCurrent(vector<int>& nums) { 9 vector<int> result(nums.size()); 10 11 for (int i=0; i<nums.size(); ++i) 12 { 13 int cnt = 0; 14 for(int j=0; j<nums.size(); ++j) 15 { 16 if (i != j) 17 { 18 if (nums[i] > nums[j]) 19 ++cnt; 20 } 21 } 22 result[i] = cnt; 23 } 24 25 return result; 26 } 27}; 28 29/* 30 * Runtime: 8 ms, faster than 90.45% 31 * Memory Usage: 10.5 MB, less than 52.49% 32 */ 33 34class Solution { 35 public: 36 vector<int> smallerNumbersThanCurrent(vector<int>& nums) { 37 vector<int> result(nums); 38 int table[101] = {0}; 39 40 sort(result.begin(), result.end()); 41 42 int cnt = 1; 43 table[result[0]] = 0; 44 for(int i=1; i<result.size(); ++i) 45 { 46 if (result[i-1] == result[i]) 47 table[result[i]] = table[result[i-1]]; 48 else 49 table[result[i]] = cnt; 50 ++cnt; 51 } 52 53 54 for (int i=0; i<nums.size(); ++i) 55 result[i] = table[nums[i]]; 56 57 return result; 58 } 59};

JavaScript

1/** 2 * Runtime: 96 ms, faster than 68.18% 3 * Memory Usage: 41 MB, less than 13.65% 4 */ 5var smallerNumbersThanCurrent = function(nums) { 6 let temp = [...nums]; 7 temp = temp.sort((a, b) => {return a-b;}); 8 let table = new Array(101).fill(0); 9 let cnt = 1; 10 table[nums[0]] = 0; 11 for(let i=1; i<nums.length; ++i) { 12 table[temp[i]] = ((temp[i-1] == temp[i]) ? table[temp[i-1]] : cnt); 13 ++cnt; 14 } 15 16 for(let i=0; i<nums.length; ++i) { 17 temp[i] = table[nums[i]]; 18 } 19 20 return temp; 21};

Ruby

1# Runtime: 72 ms, faster than 74.00% 2# Memory Usage: 210.5 MB, less than 45.00% 3def smaller_numbers_than_current(nums) 4 temp = nums.sort; 5 table = [0]*101; 6 7 cnt = 1 8 1.upto(temp.size-1) do |i| 9 table[temp[i]] = ((temp[i-1] == temp[i]) ? table[temp[i-1]] : cnt) 10 cnt += 1 11 end 12 13 0.upto(nums.size - 1) do |i| 14 temp[i] = table[nums[i]] 15 end 16 17 temp 18end