1. 两数之和 https://leetcode-cn.com/problems/two-sum/
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标
function twoSum(nums: number[], target: number): number[] {
let hashmap = new Map();
hashmap.set(nums[0], 0);
for (let i = 1; i < nums.length; i++) {
let needNum = target - nums[i];
if (hashmap.get(needNum) != null) {
return [hashmap.get(needNum), i];
}
hashmap.set(nums[i], i);
}
};
7. 整数反转 https://leetcode-cn.com/problems/reverse-integer/
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
function reverse(x: number): number {
let rev = 0;
while (x !== 0) {
const digit = x % 10;
x = ~~(x / 10);
rev = rev * 10 + digit;
if (rev < Math.pow(-2, 31) || rev > Math.pow(2, 31) - 1) {
return 0;
}
}
return rev;
};
53. 最大子序和 https://leetcode-cn.com/problems/maximum-subarray/
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
function maxSubArray(nums: number[]): number {
if (nums.length == 1) {
return nums[0];
}
for (let i = 1; i < nums.length; i++) {
if (nums[i - 1] > 0) {
nums[i] = nums[i] + nums[i - 1];
}
}
nums.sort((a, b) => a - b);//从小到大排序
return nums[nums.length - 1];
};
14. 最长公共前缀 https://leetcode-cn.com/problems/longest-common-prefix/submissions/
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
function longestCommonPrefix(strs: string[]): string {
let ret = "";
for (let i = 0; i < strs[0].length; i++) {
let front = strs[0][i];
console.log('front=' + front)
for (let str of strs) {
console.log(str.indexOf(front))
if (!str[i] || !(str[i] === front)) {
return ret;
}
}
ret = ret + front;
}
return ret;
};
415. 字符串相加
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
function addStrings(num1: string, num2: string): string {
let i = num1.length - 1;
let j = num2.length - 1;
let add = 0;
let retArr = [];
while (i >= 0 || j >= 0 || add > 0) {
let x = i >= 0 ? Number(num1[i]) : 0;
let y = j >= 0 ? Number(num2[j]) : 0;
let result = x + y + add;
retArr.push(result % 10);
add = Math.floor(result / 10);
i -= 1;
j -= 1;
}
return retArr.reverse().join('');
};
61.给定一个单链表 输出该链表右移K位的新链表
class ListNode {
val: number
next: ListNode | null
constructor(val?: number, next?: ListNode | null) {
this.val = (val === undefined ? 0 : val)
this.next = (next === undefined ? null : next)
}
}
function rotateRight(head: ListNode | null, k: number): ListNode | null {
if (k === 0 || !head || !head.next) {
return head;
}
let n = 1;
let cur = head;
while (cur.next) {
cur = cur.next;
n++;
}
let add = n - k % n;
if (add === n) {
return head;
}
cur.next = head;
while (add) {
cur = cur.next;
add--;
}
const ret = cur.next;
cur.next = null;
return ret;
};
215.给定一个数组 输出数组里第k大的数字
第k大的数 注意要从大到小排序
function findKthLargest(nums: number[], k: number): number {
nums.sort((a, b) => b - a);
return nums[k - 1];
};