-
Notifications
You must be signed in to change notification settings - Fork 644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
腾讯算法题 #124
Comments
问题一 function queryFn(arr) {
if(!arr.length) return 0
let res = 1
let start = 0
for (let i = 1, len = arr.length; i < len; i++){
if (arr[i] < arr[i - 1]) {
res = Math.max(res,i-start)
start = i
}
}
return res
} 问题二 function queryFn(arr) {
if(!arr.length) return 0
let res = 1
let num = 0
let lastVal = 0
for (let i = 0, len = arr.length-1; i < len; i++){
for (let j = i + 1; j < len; j++){
if (arr[j] > lastVal) {
num++
lastVal = arr[j]
}
}
res = Math.max(res,num)
}
return res
} |
解答问题一:const findLengthOfLCIS = (nums) => {
if(nums.length <= 1) return nums.length
let max = 1, count = 1
for(let i = 1; i < nums.length; i++){
if(nums[i] > nums[i-1]) {
count += 1
} else {
count = 1
}
max = Math.max(max, count)
}
return max
} 解答问题二:var maxLength = function(nums) {
if(nums.length <= 1) return nums.length
let count = 1, max = 1, start = 0
for(let i = 0; i < nums.length-1; i++) {
start = nums[i]
for(let j=i+1; j < nums.length; j++) {
if(nums[j]>start) {
count ++
start = nums[j]
}
}
max = Math.max(max, count)
count = 1
}
return max
} |
问题一: 找出连续最大升序的数量var findLengthOfLCIS = function(nums) {
if (nums.length <= 1) return nums.length
let i = 0, j = 1
let max = 1
while (j < nums.length) {
if (nums[j] > nums[j - 1]) {
max = Math.max(max, j - i + 1)
j++
} else {
i = j
j = j + 1
}
}
return max
} |
var findLengthOfLCIS = function(nums) {
if(nums.length <= 1) return nums.length
let max = 1,count = 1,len = nums.length
for(let i = 1; i < len; i++){
if(nums[i] > nums[i-1]){
count += 1
}else{
count = 1
}
max = Math.max(max,count)
}
return max
}; var findLengthOfLCIS = function(nums) {
if(nums.length <= 1) return nums.length
let max = 1,count = 1,len = nums.length
for(let i = 1; i < len; i++){
if(nums[i] !== (nums[i-1] + 1) && nums[i] > nums[i-1]){
count += 1
}else{
count = 1
}
max = Math.max(max,count)
}
return max
}; |
const 连续最大升序 = arr => {
let sum = 1, _sum = 1
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] < arr[i + 1]) _sum += 1
else _sum = 1
if (_sum > sum) sum = _sum
}
console.log(sum)
}
const 不连续最大升序 = arr => {
// 保存每个下标对应的最大升序数量
let 数组下标对应的非连续最大升序 = {}
// 从最后一个算
for (let i = arr.length - 1; i >= 0; i--) {
let 当前下标对应的所有非连续升序集 = [1]
for (let j = i + 1; j < arr.length - 1; j++) {
// 如果后面的值大于当前值 将累计值存入数据
if (arr[i] < arr[j]) 当前下标对应的所有非连续升序集.push(数组下标对应的非连续最大升序[j] + 1)
}
// 过滤出每个下标的最大值
数组下标对应的非连续最大升序[i] = Math.max(...当前下标对应的所有非连续升序集)
}
// 过滤出对象中最大的值
console.log(Math.max(...Object.values(数组下标对应的非连续最大升序)))
} |
|
|
测试数据let arr = [101,19,12,34,51,32,7,103,8,104,1,105,2,106] |
|
/**
* 连续不连续最大升序数量
* 连续可以使用双指针
* let arr = [101,19,12,34,51,32,7,103,8]
*/
//1. 连续升序最大数量
function findMaxAesc(arr) {
if (arr.length === 0) return 0
let res = 1
let slow = 0
for (let fast = 1, len = arr.length; fast < len; fast++) {
if (arr[fast] < arr[fast - 1]) {
slow = fast
}
res = Math.max(res, fast - slow + 1)
}
return res
}
function findMaxAesc3(arr) {
if (arr.length <= 1) return arr.length
let max = 1
let count = 1
for (let i = 1; i < arr.length; i++) {
if (arr[i] > arr[i - 1]) {
count++
} else {
count = 1
}
max = Math.max(max, count)
}
return max
}
// let arr = [101,19,12,34,51,32,7,103,8,104,1,105,2,106]
let arr = [2, 1, 3, 4, 5]
console.log(findMaxAesc(arr))
console.log(findMaxAesc3(arr))
//不连续最大升序数量
function findMaxAesc2(arr) {
if (arr.length === 0) return 0
let res = 1
for (let i = 0, leng = arr.length; i < leng; i++) {
let slow = arr[i]
let num = 1
for (let j = i + 1; j < leng; j++) {
if (arr[j] > slow) {
num++
slow = arr[j]
}
}
res = Math.max(res, num)
}
return res
}
console.log(findMaxAesc2(arr)) |
function fn(nums){ console.log(fn([101,19,12,51,32,7,103,8])) |
问题一: 找出连续最大升序的数量
问题二: 找出不连续最大升序的数量
The text was updated successfully, but these errors were encountered: