- 题1 : 给定一系列数,和一个sum和,求序列中最大子序列的长度为多少?? 使用简单动态规划即可。
- 代码
function findMax(arr, sum) {
let memo = [];
memo[0] = arr[0];
let res = [];
res.push(arr[0]);
let max = -1;
for (let i = 1; i < arr.length; i++) {
memo[i] = Math.max(arr[i] + memo[i - 1], arr[i]);
if (memo[i] < sum) {
res.push(arr[i]);
} else if (memo[i] === sum) {
res.push(arr[i]);
max = Math.max(max, res.length);
memo[i + 1] = arr[i + 1];
} else {
memo[i + 1] = arr[i + 1];
}
}
return max;
}
let arr = [1, 2, 3, 4, 3, 2];
let sum = 6;
console.log(findMax(arr, sum));
- 题2 : 给定一系列中,求组合成的最大值 – 使用选择排序
- 代码
function maxValue2(str) {
let aa = str.split('').sort((a, b) => b - a);
let res = aa.reduce((acc, cur) => acc + cur, '');
return res;
}
function maxValue(str) {
let arr = str.split(" ");
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (parseInt(arr[i] + arr[j]) < parseInt(arr[j] + arr[i])) {
let temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
let res = arr.reduce((total, val) => total + val, "")
return res;
}
let str = "10 9";
console.log(maxValue2(str))
复习:排序算法(简单选择)
let array = [1, 2, 11, 45, 23]
function selectSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[i]) {
let temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
return arr;
}
console.log(selectSort(array));
let a1 = ['ba', 'abble', 'aco', 'cat'];
console.log(a1.sort());
let a2 = [23, 133, 2, 35, 244];
console.log(a2.sort());
console.log(a2.sort((a, b) => a - b));
console.log(a2.sort((a, b) => b - a));
function quickSort(arr, left, right) {
let len = arr.length,
i = left === undefined ? 0 : left,
j = right === undefined ? len - 1 : right;
if (i < j) {
partitionIndex = partition(arr, i, j);
quickSort(arr, i, partitionIndex - 1);
quickSort(arr, partitionIndex + 1, j)
}
return arr;
}
function partition(arr, left, right) {
let pivot = left,
index = pivot + 1;
for (let i = index; i <= right; i++) {
if (arr[i] < arr[pivot]) {
swap(arr, i, index);
index++;
}
}
swap(arr, pivot, index - 1);
return index - 1;
}
function swap(arr, i, j) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
let arr = [45, 112, 23, 38]
console.log(quickSort(arr));
function quickSort2(arr, left, right) {
if(arr.length < 1) return arr;
let i = left == undefined ? 0 : left,
j = right == undefined ? arr.length - 1 : right;
let pivotIndex = Math.floor(arr.length / 2);
let pivot = arr.splice(pivotIndex, 1)[0];
let l = [],
r = [];
for (let i = 0; i < arr.length; i++) {
if(arr[i] < pivot) {
l.push(arr[i]);
} else {
r.push(arr[i]);
}
}
return quickSort2(l).concat([pivot], quickSort2(r));
}
console.log(quickSort2(arr))