
function intersect(nums1: number[], nums2: number[]): number[] {let arr1=new Array();let arr2=new Array();let result=new Array();for(let i=0;i<nums1.length;i++){ if(arr1[nums1[i]]===undefined) arr1[nums1[i]]=1 else arr1[nums1[i]]=arr1[nums1[i]]+1}console.log(arr1)for(let i=0;i<nums2.length;i++){ if(arr2[nums2[i]]===undefined) arr2[nums2[i]]=1 else arr2[nums2[i]]=arr2[nums2[i]]+1}console.log(arr2)for(let i=0;i<Math.min(arr1.length,arr2.length);i++){ if(arr1[i]!==undefined&&arr2[i]!==undefined){ for(let j=0;j<Math.min(arr1[i],arr2[i]);j++){ result.push(i) } }}return result};
function intersect(nums1: number[], nums2: number[]): number[] {let arr1=new Array();let result=new Array();for(let i=0;i<nums1.length;i++){ if(arr1[nums1[i]]===undefined) arr1[nums1[i]]=1 else arr1[nums1[i]]=arr1[nums1[i]]+1}for(let i=0;i<nums2.length;i++){ if(arr1[nums2[i]]!==undefined&&arr1[nums2[i]]!==0){ result.push(nums2[i]) arr1[nums2[i]]--; }}return result};

function merge(nums1: number[], m: number, nums2: number[], n: number): void {nums1.splice(m, n, ...nums2)nums1.sort((a, b) => a - b);};

/*** @param {number[][]} mat* @param {number} r* @param {number} c* @return {number[][]}*/var matrixReshape = function(mat, r, c) { const sums=mat.length*mat[0].length const n=mat[0].length let arr=new Array() let results=new Array() if(r*c!==sums){ return mat } else{ for (let i = 0; i < sums; i++) { arr.push(mat[parseInt(i/n)][i%n]) if((i+1) % c==0){ results.push(arr) arr=[] } } return results }};

var isValidSudoku = function(board) {
const rows = new Array(9).fill(0).map(() => new Array(9).fill(0));
const columns = new Array(9).fill(0).map(() => new Array(9).fill(0));
const subboxes = new Array(3).fill(0).map(() => new Array(3).fill(0).map(() => new Array(9).fill(0)));
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
const c = board[i][j];
if (c !== '.') {
const index = c.charCodeAt() - '0'.charCodeAt() - 1;
rows[i][index]++;
columns[j][index]++;
subboxes[Math.floor(i / 3)][Math.floor(j / 3)][index]++;
if (rows[i][index] > 1 || columns[j][index] > 1 || subboxes[Math.floor(i / 3)][Math.floor(j / 3)][index] > 1) {
return false;
}
}
}
}
return true;
};


/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
const n = nums.length;
if (n <= 2) {
return n;
}
let slow = 0, fast = 2;
while (fast < n) {
if (nums[slow] != nums[fast]) {
nums[slow+2]=nums[fast]
++slow
}
++fast
}
return slow+2;
};

/**
* @param {number[][]} matrix
* @return {number[]}
*/
var spiralOrder = function (matrix) {
let m = matrix.length;
if (m === 0) return [];
let res = [];
let top = 0,
bottom = m - 1,
left = 0,
right = matrix[0].length - 1;
while (left < right && bottom > top) {
for (let i = left; i < right; i++) res.push(matrix[top][i]);
for (let i = top; i < bottom; i++) res.push(matrix[i][right]);
for (let i = right; i > left; i--) res.push(matrix[bottom][i]);
for (let i = bottom; i > top; i--) res.push(matrix[i][left]);
top++;
bottom--;
left++;
right--;
}
if (left === right) {
for (i = top; i <= bottom; i++) res.push(matrix[i][left]);
} else if (top === bottom) {
for (i = left; i <= right; i++) res.push(matrix[top][i]);
}
return res;
};