diff options
-rw-r--r-- | find_lonely_numbers_array.c | 39 | ||||
-rw-r--r-- | find_lonely_numbers_array.py | 25 |
2 files changed, 64 insertions, 0 deletions
diff --git a/find_lonely_numbers_array.c b/find_lonely_numbers_array.c new file mode 100644 index 0000000..b334653 --- /dev/null +++ b/find_lonely_numbers_array.c @@ -0,0 +1,39 @@ +// 2150. Find All Lonely Numbers in the Array +#include "leetcode.h" + +/* + * you are given an integer array 'nums'. a number 'x' is lonely when it appears + * only once, and no adjacent numbers (ie. 'x + 1' and 'x - 1') appear in the + * array. return all lonely numbers in 'nums'. you may return the answer in any + * order + */ + +int *findLonely(int *nums, int numsSize, int *returnSize) { + int arr[1000002] = {0}; + for (int i = 0; i < numsSize; i++) + arr[nums[i]]++; + *returnSize = 0; + int *ans = (int *)malloc(numsSize * sizeof(int)); + for (int i = 0; i < numsSize; i++) { + if (!nums[i] && arr[nums[i]] == 1 && !arr[nums[i] + 1]) { + ans[(*returnSize)++] = nums[i]; + continue; + } + if (arr[nums[i]] == 1 && !arr[nums[i] + 1] && !arr[nums[i] - 1]) + ans[(*returnSize)++] = nums[i]; + } + return ans; +} + +int main() { + int n1[] = {10, 6, 5, 8}, n2[] = {1, 3, 5, 3}, rs1, rs2; + int *fl1 = findLonely(n1, ARRAY_SIZE(n1), &rs1); + int *fl2 = findLonely(n2, ARRAY_SIZE(n2), &rs2); + for (int i = 0; i < rs1; i++) + printf("%d ", fl1[i]); // expect: 10 8 + printf("\n"); + for (int i = 0; i < rs2; i++) + printf("%d ", fl2[i]); // expect: 1 5 + printf("\n"); + free(fl1), free(fl2); +} diff --git a/find_lonely_numbers_array.py b/find_lonely_numbers_array.py new file mode 100644 index 0000000..fa4706d --- /dev/null +++ b/find_lonely_numbers_array.py @@ -0,0 +1,25 @@ +# 2150. Find All Lonely Numbers in the Array +from collections import Counter + +""" +you are given an integer array 'nums'. a number 'x' is lonely when it appears +only once, and no adjacent numbers (ie. 'x + 1' and 'x - 1') appear in the +array. return all lonely numbers in 'nums'. you may return the answer in any +order +""" + + +class Solution(object): + def findLonely(self, nums): + """ + :type nums: List[int] + :rtype: List[int] + """ + m = Counter(nums) + return [n for n in nums if m[n] == 1 and m[n - 1] + m[n + 1] == 0] + + +if __name__ == "__main__": + obj = Solution() + print(obj.findLonely(nums=[10, 6, 5, 8])) + print(obj.findLonely(nums=[1, 3, 5, 3])) |