代码随想录算法训练营第2天 | 209.长度最小的子数组 、59.螺旋矩阵II、58. 区间和、44. 开发商购买土地

代码随想录算法训练营第二天 || 209.长度最小的子数组(滑动窗口)59.螺旋矩阵II(旋转90°的写法)kamacoder 58.区间和(前缀和)kamacoder 44.开发商购买土地(前缀和) 该文章摘要总结了代码随想录算法训练营第二天的核心内容,主要包含两个LeetCode题目和两个kamacoder问题的解法: 209.长度最小的子数组:介绍了暴力解法(O(n²))和优化的滑动窗口解法(O(n)),重点讲解了如何通过同向双指针动态调整窗口大小来寻找满足条件的最短子数组。 59.螺旋矩阵II:提供了两种解法: 方法一:利用循环不变量原则(左闭右开)分层填充数字 方法二:通过定义方向数组实现90°旋转的巧妙填充方法 还提及了kamacoder平台上的区间和与开发商购买土地两个前缀和相关问题。 文章 阅读详情

一、209.长度最小的子数组

方法一:暴力解法 

两个循环,一个数组初始位置,一个结尾位置,寻找满足条件的情况

力扣中暴力解法超时

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int n = nums.length;
        int min =n+1;//最短数组长度
        int sum = 0;
        for(int i = 0; i<n ;i++){
            sum = 0;
            for(int j=i; j<n; j++){
                sum += nums[j];
                if(sum>=target & j-i+1<min){
                    min=j-i+1;
                    break;//找到最短退出
                }
            }
        }
        return min == n+1? 0:min;
    }
}

 方法二:滑动窗口

类似于双指针?因为最终考虑的是子数组的和,可以从0位置开始向右累加,直到满足大于target,记录下长度,减掉最左侧的数,若满足条件记录长度,并继续减左侧数,直到不满足条件则向右加,重复该过程,直到右侧指针到终点。

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int sum =0;//子数组的和
        int left=0;
        int k = nums.length+1;
        for(int i=0;i<nums.length;i++){
            sum += nums[i];
            while(sum>=target){
                if(i-left+1<k){
                    k = i-left+1;
                }
                sum -= nums[left++];
            }
        }
        //忘记判断
        if(k==nums.length+1){
            return 0;
        }else{
              return k;
        }
    }
}

//答案
class Solution {

    // 滑动窗口
    public int minSubArrayLen(int s, int[] nums) {
        int left = 0;
        int sum = 0;
        int result = Integer.MAX_VALUE;
        for (int right = 0; right < nums.length; right++) {
            sum += nums[right];
            while (sum >= s) {
                result = Math.min(result, right - left + 1);//精简语法
                sum -= nums[left++];
            }
        }
        return result == Integer.MAX_VALUE ? 0 : result;//精简语法
    }
}

错误记录:最后忘记判断没有结果的情况,应判断结果长度是否为初始值。

二、59.螺旋矩阵II

过程:本题拿到手没有思路,直接观看视频。自己直接上手不知道设什么为变量,也不知道如何写循环条件,也分不清要用for还是while。

看完讲解后感想:将整体过程分为重复的部分时(本题中为循环一圈)可以使用while循环,主要考虑循环终止条件。具体对数据进行遍历操作时,要使用for循环,并且要清楚起止条件,并考虑边界条件。

实现起来麻烦但不复杂,需要认真思考每一步的条件取值。要熟悉二维数组的索引。

class Solution {
    public int[][] generateMatrix(int n) {
        int loop=n/2;//循环的圈数
        int startx=0;
        int starty=0;
        int count=1;
        int[][] matrix =new int[n][n];
        int num =1;//循环的数字

        while(loop--!=0){
            for(int j=starty;j<n-count;j++){
                matrix[startx][j]=num++;
            }
            for(int i=startx;i<n-count;i++){
                matrix[i][n-count]=num++;
            }
            for(int j=n-count;j>starty;j--){
                matrix[n-count][j]=num++;
            }
            for(int i=n-count;i>startx;i--){
                matrix[i][starty]=num++;
            }
            startx++;starty++;count++;
        }
        if(n%2==1){
            matrix[startx][starty]=num;
        }
        return matrix;
    }
}

错误点:循环执行完后已经将startx和starty加一,最后判断奇数中不需要再加。会溢出。

三、58. 区间和

前缀和思想计算区间和:在vec数组上 下标 2 到下标 5 之间的累加和,可以用 p[5] - p[1] 

 接触ACM模式:

import java.util.Scanner;

public class Main{
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int n = scanner.nextInt();//获取数组长度
        int[] vec = new int[n];//获取输入数组
        int[] p = new int[n];//数组前缀和
        
        int presum = 0;
        for(int i=0;i<n;i++){
            vec[i]=scanner.nextInt();
            presum +=vec[i];
            p[i]=presum;
        }
        
          while (scanner.hasNextInt()) {
            int a = scanner.nextInt();
            int b = scanner.nextInt();

            int sum;
            if (a == 0) {
                sum = p[b];
            } else {
                sum = p[b] - p[a - 1];
            }
            System.out.println(sum);
        }

        scanner.close();

    }
}
 

四、44. 开发商购买土地

 44. 开发商购买土地 | 代码随想录

同样运用前缀和的思路,和答案统计前缀和的位置不一样,结果一致。

import java.util.Scanner;

public class Main{
    public static void main (String[] args) {
        Scanner in=new Scanner(System.in);
        
        int n = in.nextInt();
        int m = in.nextInt();
        int[][] matrix = new int[n][m];
        int sum =0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                matrix[i][j]=in.nextInt();
                sum +=  matrix[i][j];
            }
        }
        
        //横向前缀和
        int sumx=0;
        int[] sumn =new int[n];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
               sumx +=matrix[i][j];
            }
            sumn[i]=sumx;
        }
        
        //纵向前缀和
         int sumy=0;
        int[] summ =new int[m];
        for(int j=0;j<m;j++){
            for(int i=0;i<n;i++){
               sumy +=matrix[i][j];
            }
            summ[j]=sumy;
        }
        
        int result = Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            result = Math.min(result, Math.abs(sum -2* sumn[i]));
        }
        for(int j = 0; j < m; j++){
            result = Math.min(result, Math.abs(sum -2* summ[j]));
        }
        
        System.out.println(result);

        in.close();
        
    }
    
}

五、今日总结

  1. 了解了前缀和思想来实现数组区间求和。
  2. 了解ACM模式,刚开始还是不太习惯,希望多应用后更加熟练。 

六、数组总结 

  1. 二分法:必须是有序数组,注意循环不变量。
  2. 双指针法:通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。
  3. 滑动窗口:滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。
  4. 模拟行为:真正解决题目的代码都是简洁的,或者有原则性的。
  5. 前缀和:求区间和。
代码随想录算法训练营Day02 | 209.长度最小的子数组、59.螺旋矩阵II、区间和、开发商购买土地 【代码】代码随想录算法训练营Day02 | 209.长度最小的子数组、59.螺旋矩阵II、区间和、开发商购买土地 阅读详情

相关推荐

0009 用VisualStudio设计Max工具

这次分享个独家专利^)^:在Visual Studio中设计3dsMax脚本工具界面。 某次做原型设计时,需求改来改去,实在懒得搞GUI;虽然也尝试在Axure RP里画原型,但还是Visual Studio更顺手,也更容易测试一些交互,就直接在VS里做了。后来突发奇想,想实验一把能否直接用到Max里去,结果没想到成功了,效果还挺好。发现了新大陆,记录一下。   开始: 在VS里新建W...

whwst的专栏 769

代码随想录算法训练营第02天 | 209.长度最小的子数组、59.螺旋矩阵II、58. 区间和、44. 开发商购买土地

这是一道滑动窗口的题目,设置初始左右指针指向索引为0的位置,移动右指针,并纪录子数组的和,当满足条件时,while 循环移动左指针不断缩小窗口,看是否有满足条件的子数组,并更新最小子数组的长度。第二圈,从左到右 n-2 次,接下来从上到下 (n-2)-1 次,再从右到左 (n-2)-1 次,最后从下到上 (n-2)-2 次。第三圈,从左到右 n-4 次,接下来从上到下 (n-4)-1 次,再从右到左 (n-4)-1 次,最后从下到上 (n-4)-2 次。,for 循环生成前缀和数组,时间复杂度。

程序员黄雷的博客 1003

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板)

本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。

potato的博客 1281

代码随想录算法训练营第二天| LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II、拓展58.区间和、44.开发商购买土地。

LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II、拓展58.区间和、44.开发商购买土地

qq_64036065的博客 1269

大模型在心律失常预测及治疗方案制定中的应用研究报告

目录一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究创新点二、大模型技术概述2.1 大模型基本原理2.2 常见大模型类型及特点2.3 大模型在医疗领域的应用现状三、心律失常的术前预测与准备3.1 术前心律失常预测的重要性3.2 大模型在术前预测中的应用案例3.3 基于预测结果的术前准备方案四、术中监测与实时调整4.1 术中监测心律失常的方法与技术4.2 大模型辅助术中决策的机制4.3 实时调整手术方案的策略与实践五、术后恢复与并发症风险预测5.1 术后心律失常的监测与评估5.2 大模型预测术

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1597

Multisim14安装失败?手把手教你彻底清理残留文件(附专用卸载工具)

本文针对Multisim14安装失败问题,提供了一套从根源解决的完整方案。文章详细分析了安装失败的三大元凶——文件残留、注册表残留和隐藏组件,并手把手指导用户使用专用卸载工具进行标准化清理,再结合手动深度清理文件系统和注册表,最终实现彻底卸载和完美重装,有效解决Multisim14安装问题。

weixin_29179311的博客 317

代码随想录|算法训练营Day2|209.长度最小的子数组 ,59.螺旋矩阵II ,58.区间和, 44.开发商购买土地

1)自己做代码实现时,需要先看一下代码(不管是暴力解法还是滑动窗口的双指针解法),才能自己写出来,尤其注意result的处理部分。2)滑动窗口代码实现时,有一次提交错误,是因为 return result == INT32_MAX?0 : result;这个result写成了subLen,注意最后一定返回的是比较结果。3)题目学习 + 理解 + 完成代码 + 完成日志时间:16:32—19:09。题5. LeetCode 59 螺旋矩阵II(中等)螺旋矩阵II螺旋矩阵II。

weixin_43978140的博客 989

微信小游戏审核避坑指南:如何一次性通过微信审核(附最新审核要求)

本文详细解析微信小游戏审核全流程,提供从开发到上线的关键策略,帮助开发者一次性通过审核。涵盖合规性自查、材料优化、开发环境配置、版本管理、审核材料填写技巧等核心内容,并附最新审核要求和常见驳回问题解决方案,显著提升审核通过率。

weixin_28454475的博客 1411

代码随想录算法训练营第二天 | 209. 长度最小的子数组,59. 螺旋矩阵 II,58. 区间和,44. 开发商购买土地

滑动窗口很奇妙,难以用语言描述其奇特之处,初读代码也比较难以理解其精髓,虽然非常短小精悍,为什么他就比暴力解法的的时间复杂度低(不是指的n和n2的区别,是那种穷举所有情况和避免不必要情况的区别),这也是算法的奇特所在吧,常看常感悟!这变量还倒腾我好久,原来就是告诉他行`数和`列数,螺旋还好,一步步写变量的变化,反正数字不知道怎么变化,就赋值这个最直接。

northern_light_的博客 907

斯坦福大学3D点云模型下载

本文整理了斯坦福大学10个经典的点云(pcd)及其模型(ply),方便日后使用,欢迎免费下载!

孙悟空 7733

Nacos 从困惑到蒙圈(9)Nacos 适配 达梦数据库【最新版】

介绍Nacos适配达梦数据库的详细步骤,包括对最新版本的支持改造。

甘蓝的专栏 1378

代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II、58.区间和、44.开放商购买土地

给定一个含有 n 个正整数的数组 nums 和一个正整数 target ,找出该数组中满足其和 ≥ target 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。2子数组 [4,3] 是该条件下的长度最小的子数组。10时间复杂度O(n),空间复杂度O(1)。

m0_62379706的博客 1462

UNet 改进(27):结合SCSE注意力机制的UNet网络实现

本文介绍了一种结合SCSE注意力机制的改进UNet网络架构。该网络在保持UNet经典编码器-解码器结构基础上,通过在每层添加SCSEBlock模块,融合了通道注意力和空间注意力机制。通道注意力通过全局池化和1×1卷积生成通道权重,空间注意力则产生空间权重图,二者相加增强关键特征响应。该设计具有以下优势:1)保持原始UNet的多尺度特征提取能力;2)通过注意力机制提升对重要区域的关注度;3)计算效率高,仅增加少量参数。测试显示网络能保持输入输出分辨率不变,适用于医学图像分割等像素级预测任务。完整代码实现了5层

2401_82355416的博客 415

代码随想录算法训练营第二天 | 209. 长度最小的子数组、59. 螺旋矩阵 II、58. 区间和(卡码网)、44. 开发商购买土地(卡码网)、总结

在这两天过完了数组相关的内容,重温了数组的基础知识,复习了一边二分法的原理及其应用,学习了滑动窗口问题的解法,做题有了新的思路,希望继续积累下去。

m0_51795650的博客 1080

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码随想录训练营第二天|209.长度最小的子数组、58.螺旋矩阵Ⅱ、[卡玛网]58.区间和、[卡玛网]44.开发商购买土地

主要学习了数组部分的两个高级玩法:滑动窗口(本质是双指针)、前缀和(体现了一种预处理的思想)。

csy031117的博客 850

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

代码随想录算法训练营第二天 |209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地

209.长度最小的子数组初始思路是用双指针,这点想到了。但是细节需要细化。最清晰的思路:右指针for从0开始右移,在每个循环里,算sum;while sum >= target: 意味着可以让左指针 l 右移。len = min (len, r-l+1) //更新 len更新 sum;让左指针 l 右移;//然后就可以进入下一个循环,r++了最后,验证 len 是否等于原来的 INT32_MAX?0 : len;

2301_80094768的博客 747

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

代码随想录算法训练营第二天| LeetCode209 长度最小的子数组、LeetCode59 螺旋矩阵Ⅱ、卡码58 区间和、卡码44 开发商购买土地

​两层for循环,第一层for循环控制开始位置,第二层for循环控制结束位置,不断遍历子区间,返回最小区间长度1、简化暴力方法中两个for循环为一个for循环2、for循环中变量j记录终止位置,寻找从i到j所有元素累加后的sum大于等于targettarget = 7,并记录当前区间长度为subl。

weixin_45519185的博客 673

代码随想录算法训练营第二天 | 209.长度最小的子数组、59.螺旋矩阵II、58. 区间和、44. 开发商购买土地

状态:√类别:滑动窗口难度:mid还可以,调试了两次ac了,基本思路没问题,边界条件要明确状态:×类别:转圈逻辑难度:mid做了n次了还是不记得,有基本思路,但是忘记了要定义四个变量状态:×类别:前缀和难度:mid昨天刚做过前缀和的题...思想要记牢,熟悉ACM模式,开始使用了Map超时了,可以用数组。

weixin_47495480的博客 1466

代码随想录算法训练营第二天 | 209. 长度最小的子数组 | 59.螺旋矩阵II | 58. 区间和(卡码网)| 44. 开发商购买土地

自己实现过程中遇到哪些困难思路是对的,但是实现起来总是会出问题,比如编译错误,数组越界,还有实现错了。今日收获,记录一下自己的学习时长断断续续有3个多小时吧,效率其实有点低,而且我觉得时间分散其实并不太好。由于晚了一天参加训练营,所以今天补了两天的进度,还是有些压力的,每天按时完成任务是最好的节奏。但是前两天的题目还好,刚开始都比较简单​​​​​​​解惑(补充)应该先想好思路,把思路写出来,然后对照思路当中的公式,去编写代码,我能够想到正确的解题方向,但是总是在实现代码的时候出错。

Noah_aa的博客 1139

代码随想录算法训练营第二天| 209. 长度最小的子数组 59. 螺旋矩阵II 58. 区间和 44.开发商购买土地 ps.数组总结

看到题目的思路:如果当前窗口已经满足值>=s了,那窗口就该缩小、向前移动了。/三元运算符时间复杂度:O(n) 空间复杂度:O(1)看到题目的思路:首先写出几个n对应的矩阵,思考其规律。按照行列,圈数,中间值,每一格对应的值,每一条边遍历的长度,写出循环。resultresultii时间复杂度:O(n^2) 空间复杂度:O(1)

Catherine_boyu的博客 1079

代码随想录算法训练营第二天 | LeetCode209.长度最小的子数组、LeetCode59.螺旋矩阵II、58区间和、44开发商购买土地

借鉴区间和的思想,则以横向为例,对某一行的土地价值分别求和后,形成一个大小为行数的另外一个数组,对该数组的数据采用逐个累加并且逐个比较,也就是说,加了一个后,相当于是求了一行的数据,也就将所有土地分成了被加的一块和剩余的一块总共两块区域,此时进行两块土地的价值做差并求绝对值,得到两块土地总价值之差,但是还不能确定是最小,因此还需要继续加,继续分。当然还有一种方式,就是不采用区间和的方式,对每一行进行累加后就进行判断,取最小,对列也是如此,到最后也就能得出最小的土地价值差。

m0_68237332的博客 988

代码随想录算法训练营第二天 | 209.长度最小的子数组,59.螺旋矩阵II,区间和

在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。这个解题思路巧妙的用到了和的思想,即创建一个一样大小的数组,新数组的第i位的值是实际数组前i位的和,这就方便去求解。

2201_75893674的博客 730

代码随想录算法训练营第二天 | 力扣209 长度最小的子数组、力扣59 螺旋矩阵II、卡码58 区间和、卡码44 开发商购买土地以及总结

数组的题看起来简单,实现起来需要有一定的代码把控力。这个章节中的重点是双指针、区间的把控和前缀和以及在二维数组上应用。

Xiaoxiaodezhuren的博客 1157

代码随想录算法训练营Day2 | 209. 长度最小的子数组,59. 螺旋矩阵II,Kama58. 区间和,Kama44. 开发商购买土地

...

print_vanilla的博客 1089

代码随想录算法训练营 day 2 | 209.长度最小的子数组,59.螺旋矩阵II,区间和,开发商购买土地

在看到这些题目时,我有思路,但是并不清晰,或者有关于边界条件的设置总是不够严谨,在看了carl哥的文章与视频后,思路清晰,能够跟着carl哥完成代码的编写,但是有些地方还是不能够准确无误的写下来,因此还需要多学多练多理解。当sum>=target时,首先记录累加和为sum的子数组长度,然后sum - =num [i],i 向数组下一位移动,即i=i+1。(2)并在该for循环中,从初始位置开始,先对num[j]依次相加,用sum记录累加和,直至sum>=target值。螺旋矩阵最主要的是边界条件的设置。

m0_63601971的博客 744
上一篇: 代码随想录算法训练营第1天 | 704. 二分查找、27. 移除元素、977.有序数组的平方
下一篇: 代码随想录算法训练营第3天 | 203.移除链表元素、707.设计链表 、 206.反转链表
Amor_Fati_Yu
博客等级 码龄6年 145粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值