动态规划——剑指 Offer 42. 连续子数组的最大和 题目: 思路: dp数组的定义:dp[i]是以 nums[i] 结尾的最大子数组和。 base_case:dp[0] = nums[0] 状态转移方程:dp[i]有两种「选择」,要么与前面的相邻子数组连接,形成一个和更大的子数组;要么不与前面 ...
分类:
编程语言 时间:
2021-05-20 17:50:09
阅读次数:
0
1. 希尔排序 思路: 是优化了的插入排序,可以改进当最值处于头或尾需要多次移动元素的问题,因为它会设置步长k(>=1),初始步长是len/2, 先保证步长为k的每个子数组有序,再进一步缩小步长直到为1的时候,数组基本有序。 ''' 希尔排序 时间复杂度 平均:O(nlogn) 最好:O(nlogn ...
分类:
编程语言 时间:
2021-04-29 11:58:13
阅读次数:
0
let splitArr = (data , senArrLen)=>{ //处理成len个一组的数据 let data_len = data.length; let arrOuter_len = data_len % senArrLen 0 ? data_len / senArrLen : par ...
分类:
编程语言 时间:
2021-04-26 13:31:46
阅读次数:
0
Description 给定数组arr和整数num,求arr的连续子数组中满足:其最大值减去最小值的结果大于num的个数。请实现一个时间复杂度为O(length(arr))的算法。 Input 输入第一行为测试用例个数。每一个用例有若干行,第一行为数组,每一个数用空格隔开,第二行为num。 Outp ...
分类:
编程语言 时间:
2021-04-09 13:23:00
阅读次数:
0
暴利求解法 设置tem记录每个元素的累加和,当为奇数的时候,将tem值与sum值累加,完成所有遍历,即所有奇数长度子数组的和 class Solution { public int sumOddLengthSubarrays(int[] arr) { int sum=0; if(arr.length ...
分类:
编程语言 时间:
2021-04-02 13:31:40
阅读次数:
0
一.编写代码 1.思路分析 要求一个数组中最大子数组之和,可对数组中的子数组进行遍历,再对子数组中的值进行遍历,然后累加,存储到临时变量中,比较每一个子数组中的值之和,最后得出最大数组之和。 2.java代码 package homework; public class MaxSubArray { ...
分类:
编程语言 时间:
2021-03-16 13:30:05
阅读次数:
0
滑动窗口(2) 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组,则返回 0 。 看到子数组,想到了滑动窗口。 滑动窗口的优 ...
分类:
其他好文 时间:
2021-02-22 12:36:53
阅读次数:
0
Given an array of non negative integers, return the maximum sum of elements in two non overlapping (contiguous) subarrays, which have lengths and . (F ...
分类:
移动开发 时间:
2021-02-18 12:53:23
阅读次数:
0
给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。 示例 1: 输入: [1, 2, 2, 3, 1] 输出: 2 解释: 输入数组的度是2,因为元素1和2的出现频数最大,均 ...
分类:
编程语言 时间:
2021-02-17 14:37:36
阅读次数:
0
困难题,先想着DP扫描,但是会爆栈; 主体思想仍然采用滑动窗口来进行; 但是对于该题目,有一个比较新的点,要利用脑经急转弯思想把问题转换一下; 对于正好为K个不同元素组成的最长字符串可以转换为: 最多由K个不同元素组成的字符串-最多由K-1个不同元素组成的字符串; (这样可以有效的降低复杂度,使得单 ...
分类:
编程语言 时间:
2021-02-10 13:13:44
阅读次数:
0