1.leetCode 第三题
需要:
https://leetcode-cn.com/probl…
给定一个字符串 s,请你找出其中不含有反复字符的最长子串的长度。
输出: s = “pwwkew”
输入: 3
解释: 因为无反复字符的最长子串是 “wke”,所以其长度为 3。
请留神,你的答案必须是 子串 的长度,”pwke” 是一个子序列,不是子串。
function print(s) {
let str = "";
let size = 0;
for (let i = 0; i < s.length; i++) {if (str.includes(s[i])) {
// 拼接字符串的过程中将原来的 str 置空 而后再从新累加
str = str.substr(i + 1);
} else {str += s[i];
// 计算 size 的最大值
size = size < str.length ? str.length : size;
}
}
return size;
}
2.leetCode 第四题
需要:
https://leetcode-cn.com/probl…
给定两个大小别离为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数。
示例 1:输出:nums1 = [1,3], nums2 = [2]
输入:2
解释:合并数组 = [1,2,3],中位数 2
输出:nums1 = [1,2], nums2 = [3,4]
输入:2.5
解释:合并数组 = [1,2,3,4],中位数 (2 + 3) / 2 = 2.5
示例 3:输出:nums1 = [0,0], nums2 = [0,0]
输入:0
示例 4:输出:nums1 = [], nums2 = [1]
输入:1
示例 5:输出:nums1 = [2], nums2 = []
输入:2
function print(nums1, nums2) {
let m = nums1.length - 1;
let n = nums2.length - 1;
let k = end = m + n + 1;
while (m >= 0 && n >= 0) {if (nums1[m] <= nums2[n]) {nums1[k] = nums2[n];
n--;
k--;
} else {nums1[k] = nums1[m];
m--;
k--;
}
}
while (n >= 0) {nums1[k] = nums2[n];
k--;
n--;
}
// 以上是合并两个有序数组 nums1 为合并之后的
// 用来判断是否是一个整数
let middleStr = (end / 2).toString();
let middleIndex = Math.floor(end/ 2);
// 如果是小数例如[1,2,3,4] end=3/2=1.5
if (middleStr.includes(".")) {// (2 + 3) /2=2.5
return (nums1[middleIndex] + nums1[middleIndex + 1]) / 2;
} else {//[1,2,3] middleStr 为 2 /2=1 打印为 2
return nums1[middleStr] / 1;
}
}