Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a376ef6

Browse files
Arrays basics and questions
1 parent a57de77 commit a376ef6

File tree

4 files changed

+265
-0
lines changed

4 files changed

+265
-0
lines changed

‎#2 - Arrays/#0 - array-basics.js‎

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
// Arrays in Javascript
2+
3+
// Decalaration
4+
let person = {
5+
name: "Piyush",
6+
age: 25,
7+
};
8+
9+
let arr = ["apple", "banana", "cherry", person];
10+
11+
console.log(arr.length); // know the length of an array
12+
13+
// # Add and Remove Elements
14+
15+
// Add to End of the Array
16+
arr.push("orange");
17+
18+
// Remove From End of the Array
19+
arr.pop();
20+
arr.pop();
21+
22+
// Add to Top of the Array
23+
arr.unshift("orange");
24+
25+
// Remove From Top of the Array
26+
arr.shift();
27+
28+
// # Looping Arrays
29+
30+
// For Loop
31+
for (let i = 0; i < arr.length; i++) {
32+
// console.log(arr[i]);
33+
}
34+
35+
// While Loop
36+
let i = 0;
37+
while (i < arr.length) {
38+
// console.log(arr[i]);
39+
40+
i++;
41+
}
42+
43+
// # Inbuilt Loop Methods
44+
const numbers = [1, 2, 3, 4, 5];
45+
46+
// map in javascript
47+
numbers.map((item, index, array) => {
48+
return item + 5;
49+
});
50+
51+
// filter in javascript
52+
numbers.filter((item, index, array) => {
53+
return item > 3;
54+
});
55+
56+
// reduce in javascript
57+
numbers.reduce((prev, item) => {
58+
return prev + item;
59+
}, 2);
60+
61+
// some in javascript
62+
numbers.some((item, index, array) => {
63+
return item > 3;
64+
});
65+
66+
// every in javascript
67+
numbers.every((item, index, array) => {
68+
return item < 10;
69+
});
70+
71+
// find in javascript
72+
numbers.find((item, index, array) => {
73+
return item > 3;
74+
});
75+
76+
// findIndex
77+
const index = [1, 2, 3].findIndex((item) => item === 2);
78+
// console.log(index);
79+
80+
// Spread and Rest Operators
81+
const nums = [1, 2, 3];
82+
const nums2 = [4, 5, 6, 7];
83+
84+
const finalNums = [...nums, ...nums2]; // Spread Operator
85+
86+
// Rest Operator
87+
function sum(...numbers) {
88+
return numbers;
89+
}
90+
91+
console.log(sum(nums, nums2, 5, "hello"));
92+
93+
// # More Array Methods
94+
95+
// concat
96+
nums.concat(nums2, arr);
97+
98+
// Slice
99+
arr.slice(-2);
100+
101+
// Splice
102+
arr.splice(1, 2, "orange");
103+
104+
// Fill
105+
const dummy = [2, 5, 1, 6];
106+
dummy.fill(2, 2);
107+
108+
// Flat
109+
const flatEx = [1, [2, 3], [[4, 5], 6]]; // => [1,2,3,4,5,6]
110+
111+
const flattenedArray = flatEx.flat(2);
112+
// console.log(flattenedArray);
113+
114+
// reverse
115+
nums.reverse();
116+
// console.log(nums);
117+
118+
// sort
119+
const unsorted = [5, 2, 10, 7, 3, 1];
120+
unsorted.sort((a, b) => b - a);
121+
console.log(unsorted);
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Ques 1 - Second Largest Number
2+
// Given an array Arr of size N, print second largest
3+
// distinct element from an array.
4+
5+
// Input: [12, 35, 1, 10, 34, 1] ----->>>>> Output: 34
6+
// Input: [10, 5, 10] ----->>>>> Output: 5
7+
8+
// Brute Force Approach
9+
function secondLargest(arr) {
10+
const uniqueArr = Array.from(new Set(arr)); // O(n)
11+
12+
uniqueArr.sort((a, b) => {
13+
// O(nlogn)
14+
return b - a;
15+
});
16+
17+
if (uniqueArr.length >= 2) {
18+
return uniqueArr[1];
19+
} else {
20+
return -1;
21+
}
22+
}
23+
24+
// console.log(secondLargest([10, 5, 10]));
25+
// Time Complexity -> O(nlogn);
26+
27+
// Optimised Approach
28+
// [12, 35, 1, 10, 34, 1]
29+
// secondLargest = 34
30+
// largest = 35
31+
function secondLargestOptimised(arr) {
32+
let largest = Number.NEGATIVE_INFINITY;
33+
let secondLargest = Number.NEGATIVE_INFINITY;
34+
35+
for (let i = 0; i < arr.length; i++) {
36+
if (arr[i] > largest) {
37+
secondLargest = largest;
38+
largest = arr[i];
39+
} else if (arr[i] != largest && arr[i] > secondLargest) {
40+
secondLargest = arr[i];
41+
}
42+
}
43+
44+
return secondLargest;
45+
}
46+
47+
console.log(secondLargestOptimised([10, 5, 10]));
48+
// Time Complexity -> O(n);
49+
// Space Complexity -> O(1);
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Ques 2 - Rotate Array by K
2+
// Given an integer array nums, rotate the array to the right by k steps,
3+
// where k is non - negative.
4+
5+
// Input: nums = [1,2,3,4,5,6,7], k = 3 ----->>>>> Output: [5,6,7,1,2,3,4]
6+
// Input: nums = [-1,-100,3,99], k = 2 ----->>>>> Output: [3,99,-1,-100]
7+
8+
// Brute Force Approach
9+
function rotateArray(nums, k) {
10+
let size = nums.length;
11+
12+
if (size > k) {
13+
k = k % size;
14+
}
15+
16+
const rotated = nums.splice(size - k, size); // [5, 6, 7]
17+
nums.unshift(...rotated);
18+
19+
return nums;
20+
}
21+
22+
// Time Complexity - O(n)
23+
// console.log(rotateArray([1, 2, 3, 4, 5, 6, 7], 3));
24+
25+
// Optimised Approach
26+
function rotateArrayOptimised(nums, k) {
27+
let size = nums.length;
28+
29+
if (size > k) {
30+
k = k % size;
31+
}
32+
33+
reverse(nums, 0, nums.length - 1); // O(n)
34+
reverse(nums, 0, k - 1); // O(k)
35+
reverse(nums, k, nums.length - 1); // O(n-k)
36+
37+
return nums;
38+
}
39+
40+
// Time Complexity -> O(n)
41+
// Space Complexity -> O(1)
42+
43+
function reverse(nums, left, right) {
44+
while (left < right) {
45+
const temp = nums[left];
46+
nums[left++] = nums[right];
47+
nums[right--] = temp;
48+
}
49+
}
50+
51+
console.log(rotateArrayOptimised([-1, -100, 3, 99], 2));
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Ques 3 - Remove Duplicates from Sorted Array
2+
// Given an integer array nums sorted in non-decreasing order, remove
3+
// the duplicates in-place such that each unique element appears
4+
// only once.The relative order of the elements should be kept
5+
// the same.Then return the number of unique elements in nums.
6+
7+
// Input: [1,1,2] ----->>>>> Output: 2, [1,2,_]
8+
// Input: [0,0,1,1,1,2,2,3,3,4] ----->>>>> Output: 5, [0,1,2,3,4,_,_,_,_,_]
9+
10+
// With JS Methods
11+
function removeDuplicates(nums) {
12+
for (let i = 0; i < nums.length - 1; i++) {
13+
// O(n)
14+
if (nums[i] === nums[i + 1]) {
15+
nums.splice(i + 1, 1); // O(1)
16+
i--;
17+
}
18+
}
19+
20+
return nums.length;
21+
}
22+
23+
// Time Complexity - O(n)
24+
// Space Complexity - O(1)
25+
// console.log(removeDuplicates([1, 1, 2]));
26+
27+
// Without JS Methods - Two pointer Approach
28+
function removeDuplicatesNew(nums) {
29+
if (nums.length === 0) return 0;
30+
let i = 0;
31+
32+
for (let j = 1; j < nums.length; j++) {
33+
if (nums[i] !== nums[j]) {
34+
i++;
35+
nums[i] = nums[j];
36+
}
37+
}
38+
39+
return i + 1;
40+
}
41+
42+
// Time Complexity - O(n)
43+
// Space Complexity - O(1)
44+
console.log(removeDuplicatesNew([0, 0, 1, 1, 1, 2, 2, 3, 3, 4]));

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /