lintry

已完成的答案

1 +/**
2 + * @param {number[]} nums
3 + * @param {number} target
4 + * @return {number[]}
5 + */
6 +var twoSum1 = function(nums, target) {
7 + for(let [i, v] of nums.entries()) {
8 + let f = nums.indexOf(target-v, i+1);
9 +
10 + if (f >= 0) {
11 + return [i, f]
12 + }
13 + }
14 +};
15 +
16 +var twoSum = function(nums, target) {
17 + let m = {}
18 + for(let [i, v] of nums.entries()) {
19 + (m[v] === void 0) && (m[v]=i);
20 + let d = target-v;
21 + // console.info('-->', i,v,d,m[d])
22 + if (m[d] >= 0 && m[d] !== i) {
23 + return [m[d], i]
24 + }
25 + }
26 +};
27 +
28 +
29 +console.info(twoSum([3,2,4], 6));
30 +console.info(twoSum([2,7,11,15], 9));
31 +console.info(twoSum([4,2,4], 8));
1 +/**
2 + * @param {number} n
3 + * @return {string}
4 + */
5 +var convertToTitle = function(n) {
6 + let title = [];
7 + while (n--) {
8 + let c = n%26+1;
9 + console.info(n, c, String.fromCharCode(64+c));
10 + n = ~~(n / 26);
11 +
12 + title.unshift(String.fromCharCode(64+c));
13 + }
14 + return title.join('');
15 +};
16 +
17 +console.info(convertToTitle(701))
...\ No newline at end of file ...\ No newline at end of file
1 +/* Write your PL/SQL query statement below */
2 +select p.FirstName, p.LastName, a.City, a.State
3 +from Person p
4 +left join Address a on p.PersonId = a.PersonId
...\ No newline at end of file ...\ No newline at end of file
1 +/* Write your PL/SQL query statement below */
2 +with s as (
3 +select distinct Salary
4 +from Employee
5 +order by Salary desc)
6 +select max(salary) SecondHighestSalary
7 +from (select salary, rownum nm from s) t
8 +where nm = 2
1 +/**
2 + * Definition for singly-linked list.
3 + * function ListNode(val) {
4 + * this.val = val;
5 + * this.next = null;
6 + * }
7 + */
8 +function ListNode(val) {
9 + this.val = val;
10 + this.next = null;
11 +}
12 +/**
13 + * @param {ListNode} l1
14 + * @param {ListNode} l2
15 + * @return {ListNode}
16 + */
17 +var addTwoNumbers = function (l1, l2) {
18 + function list2array(list) {
19 + let arr = [];
20 + do {
21 + arr.push(list.val);
22 + list = list.next;
23 + }
24 + while (list);
25 + return arr;
26 + }
27 + function array2list(arr) {
28 + let list = new ListNode(), c = list;
29 + for (let [i, v] of arr.entries()) {
30 + c.val = v;
31 + c.next = i+1 < arr.length?new ListNode():null;
32 + c = c.next;
33 + }
34 + return list;
35 + }
36 + let arr1 = list2array(l1);
37 + let arr2 = list2array(l2);
38 + let len = Math.max(arr1.length, arr2.length);
39 + let rs = [], f = 0;
40 + for (let i = 0; i < len; i++) {
41 + let v1 = arr1.shift()||0;
42 + let v2 = arr2.shift()||0;
43 + let v = v1 + v2 + f;
44 + if (v >= 10) {
45 + rs.push(v - 10);
46 + f = 1;
47 + } else {
48 + rs.push(v);
49 + f = 0;
50 + }
51 + }
52 + if (f > 0) {
53 + rs.push(f);
54 + }
55 +
56 + return array2list(rs);
57 +};
58 +
59 +
60 +console.info(addTwoNumbers({
61 + val: 1,
62 + next: null
63 +}, {
64 + val: 9,
65 + next: { val: 9, next: null }
66 +}));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number} n
3 + * @return {boolean}
4 + */
5 +var isPowerOfThree = function(n) {
6 + if (n ===1) {
7 + return true;
8 + }
9 + while(true) {
10 + n = n/3;
11 + if (n === 1) {
12 + return true;
13 + } else if(n < 1) {
14 + return false;
15 + }
16 + }
17 +};
18 +
19 +console.info(isPowerOfThree(0));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {character[]} s
3 + * @return {void} Do not return anything, modify s in-place instead.
4 + */
5 +var reverseString = function(s) {
6 + let len = s.length, half = len>>1;
7 + for (let i=0;i<half;i++) {
8 + if (i !== len-1-i) {
9 + [s[i], s[len-1-i]] = [s[len-1-i], s[i]];
10 + }
11 + }
12 + return s;
13 +};
14 +
15 +console.info(reverseString(["H","a","n","N","a","h", "9"]));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number[]} nums1
3 + * @param {number[]} nums2
4 + * @return {number}
5 + */
6 +var findMedianSortedArrays = function(nums1, nums2) {
7 + function merge(nums1, nums2) {
8 + let nums = [];
9 + while (nums1.length || nums2.length) {
10 + if (nums1.length === 0) {
11 + return nums.concat(nums2);
12 + }
13 + if (nums2.length === 0) {
14 + return nums.concat(nums1);
15 + }
16 +
17 + if (nums1[0] < nums2[0]) {
18 + nums.push(nums1.shift());
19 + } else {
20 + nums.push(nums2.shift());
21 + }
22 + }
23 + return nums;
24 + }
25 + let nums = merge(nums1, nums2);
26 +
27 + // let nums = [...nums1, ...nums2];
28 + // nums.sort((a,b)=>a-b);
29 + // console.info(nums1, nums2, '=>', nums)
30 + let len = nums.length;
31 + if (len % 2 === 0) {
32 + return (nums[len/2-1] + nums[(len/2)]) / 2;
33 + } else {
34 + return nums[~~(len/2)];
35 + }
36 +};
37 +
38 +var nums1 = [];
39 +var nums2 = [9,
40 +28,
41 +245,
42 +307,
43 +461,
44 +561,
45 +680,
46 +683];
47 +console.info(findMedianSortedArrays(nums1, nums2));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number} x
3 + * @param {number} n
4 + * @return {number}
5 + */
6 +var myPow = function(x, n) {
7 + if (n === 0) return 1;
8 + if (n === 1) return x;
9 +
10 + if (x === 1) return 1;
11 + if (x === -1) return n % 2 === 0 ? 1 : -1;
12 +
13 + if (n < 0) {
14 + n = -n;
15 + x = 1/x;
16 + }
17 +
18 + return (n % 2 === 0) ? myPow(x*x, n/2) : x * myPow(x*x, (n-1)/2);
19 +};
20 +
21 +var slowPow = function(x, n) {
22 + if (Math.abs(x) >= 100) throw new Error('x is out of range');
23 + if (n !== ~~n) throw new Error('n is out of range');
24 +
25 + if (n === 0) return 1;
26 + if (x === 1) return 1;
27 + if (x === -1) return n % 2 === 0 ? 1 : -1;
28 +
29 + let N = 1e8;
30 + let ret = 1.0;
31 + let sign = n > 0 ? 1 : (n=-n)&&-1;
32 + while (n > 0) {
33 + ret *= p(x, n>=N?N:n);
34 + n -= N;
35 + }
36 +
37 + return sign > 0 ? ret : 1/ret;
38 +};
39 +
40 +var p = function(x, n) {
41 + let ret = 1.0;
42 + for (let i = 0; i < n; i++ ) {
43 + ret = ret * x;
44 + }
45 + return ret;
46 +};
47 +
48 +var x = 0, n = -3;
49 +console.info(myPow(x, n), Math.pow(x, n));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number[][]} matrix
3 + * @return {number[]}
4 + */
5 +var spiralOrder = function(matrix) {
6 + let rs = [];
7 + while (matrix.length) {
8 + // right
9 + if (matrix.length) {
10 + rs = rs.concat(matrix.shift());
11 + }
12 + console.info('after right matrix', matrix)
13 +
14 + // down
15 + matrix.forEach(m => {
16 + let t = m.pop();
17 + (t !== void 0) && rs.push(t);
18 + });
19 + console.info('after down matrix', matrix);
20 +
21 + // left
22 + if (matrix.length) {
23 + rs = rs.concat(matrix.pop().reverse());
24 + }
25 + console.info('after left matrix', matrix);
26 +
27 + //
28 + for (let i=0;i<matrix.length;i++) {
29 + // console.info('===>', matrix, [matrix.length-1-i], matrix.length-1-i)
30 + let t = matrix[matrix.length-1-i].shift();
31 + (t !== void 0) && rs.push(t);
32 + }
33 + console.info('matrix', matrix);
34 + }
35 +
36 + return rs;
37 +};
38 +
39 +console.info(spiralOrder([
40 + [1],
41 + [5],
42 + [9],
43 + [13]
44 + ]));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number} x
3 + * @return {number}
4 + */
5 +var reverse = function(x) {
6 + let r;
7 + let sign = Math.sign(x);
8 + try {
9 + r = Number.parseInt(String(Math.abs(x)).split('').reverse().join('')||'0');
10 + } catch (e) {
11 + r = 0;
12 + }
13 + return r > Math.pow(2, 31)-1 ? 0 : sign*r;
14 +};
15 +
16 +console.info(reverse(0));
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @param {number[][]} matrix
3 + * @return {void} Do not return anything, modify matrix in-place instead.
4 + */
5 +var setZeroes2 = function (matrix) {
6 + let m = matrix.length;
7 + let n = matrix[0].length;
8 + let rs = []
9 + // copy init matrix
10 + for (let i = 0; i < m; i++) {
11 + let r = []
12 + // for(let j=0;j<n;j++) {
13 + // r.push(void 0)
14 + // }
15 + rs.push(r);
16 + }
17 +
18 + for (let i = 0; i < m; i++) {
19 + for (let j = 0; j < n; j++) {
20 + let v = matrix[i][j]
21 + if (v === 0) {
22 + for (let x = 0; x < n; x++) {
23 + rs[i][x] = 0;
24 + }
25 + for (let y = 0; y < m; y++) {
26 + rs[y][j] = 0;
27 + }
28 + } else {
29 + (rs[i][j] === void 0) && (rs[i][j] = v);
30 + }
31 + }
32 + }
33 +
34 + return rs;
35 +};
36 +
37 +var setZeroes_ok = function (matrix) {
38 + let m = matrix.length;
39 + let n = matrix[0].length;
40 + let rs = [];
41 + // init matrix
42 + for (let i = 0; i < m; i++) {
43 + rs.push([]);
44 + }
45 +
46 + for (let i = 0; i < m; i++) {
47 + for (let j = 0; j < n; j++) {
48 + let v = matrix[i][j]
49 + if (v === 0 && rs[i][j] === void 0) {
50 + for (let x = 0; x < n; x++) {
51 + let t = matrix[i][x];
52 + if (t !== 0) {
53 + rs[i][x] = t;
54 + }
55 + matrix[i][x] = 0;
56 + }
57 + for (let y = 0; y < m; y++) {
58 + let t = matrix[y][j];
59 + if (t !== 0) {
60 + rs[y][j] = t;
61 + }
62 + matrix[y][j] = 0;
63 + }
64 + } else {
65 + rs[i][j] = v;
66 + }
67 + }
68 + }
69 +};
70 +
71 +var setZeroes = function (matrix) {
72 + let m = matrix.length;
73 + let n = matrix[0].length;
74 +
75 + let rows = new Set();
76 + let cols = new Set();
77 +
78 + for (let i = 0; i < m; i++) {
79 + for (let j = 0; j < n; j++) {
80 + let v = matrix[i][j]
81 + if (v === 0) {
82 + rows.add(i);
83 + cols.add(j);
84 + }
85 + }
86 + }
87 +
88 + rows.forEach(e => {
89 + for (let j=0;j<n;j++) {
90 + matrix[e][j] = 0;
91 + }
92 + });
93 +
94 + cols.forEach(e => {
95 + for (let i=0;i<m;i++) {
96 + matrix[i][e] = 0;
97 + }
98 + });
99 +};
100 +var matrix = [[0, 1, 2, 0], [3, 4, 5, 2], [1, 3, 1, 5]];
101 +setZeroes(matrix);
102 +console.info(matrix);
...\ No newline at end of file ...\ No newline at end of file