这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战
之前参加了沸点的每日算法题的活动,这是其中的两道题在此记录一下。(难度:简单)
最长公共前缀
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
思路:
1、首先判断数组arr存在且不是空字符串,如果存在是否有2条及以上的元素
if (!arr[0] || arr[0] === null) return result;
if (arr.length === 1) return arr[0];
2、取第一个元素arr[0]遍历,然后元素的每一项与数组的其他元素进行对比
str[i] == arr[j][i]
3、当遍历到最后一位时就把相等的元素组合到一起
result += str[i];
下面是完整的代码:
function longestCommonPrefix(arr) {
let result = '';
if (!arr[0] || arr[0] === null) return result;
if (arr.length === 1) return arr[0];
const str = arr[0];
let flag = 1;
for (let i = 0; i < str.length; i++) {
if (!arr[i + 1]) {
return result;
};
for (let j = 1; j < arr.length; j++) {
if (str[i] !== arr[j][i]) {
return result;
}
flag++;
if (flag === arr.length) { // 所有数组都遍历了后,才返回
flag = 1;
result += str[i];
}
}
}
console.log('result', result);
}
最大子序和
题目描述:
给定一个整数数组 nums
,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
示例 2:
输入:nums = [1]
输出:1
思路:
1、遍历数组nums,取相加之和sum,如果sum > 0 继续相加,否则 sum = nums[i]
2、每次遍历的时候变量ans取 ans 和 sum中较大的数
下面是完整的代码:
function maxSumArray(nums) {
let ans = nums[0];
let sum = 0;
for(let i = 0; i < nums.length; i++) {
if (sum > 0) {
sum += nums[i];
} else {
sum = nums[i];
}
ans = Math.max(ans, sum);
}
return ans;
}
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/lo…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。