首页 > 其他分享 >数组(基于代码随想录)的随笔

数组(基于代码随想录)的随笔

时间:2024-03-02 22:24:59浏览次数:30  
标签:index matrix int sum 随想录 数组 滑动 随笔

数组

数组基础知识

数组是存放在连续内存空间上的相同类型数据的集合。

数组的元素是不能删的,只能覆盖。

那么二维数组在内存的空间地址是连续的么?

Java的二维数组在内存中不是 3*4 的连续地址空间,而是四条连续的地址空间组成!

数组的经典题目

  • 二分法

二分法时间复杂度:O(logn)

循环不变量原则,只有在循环中坚持对区间的定义,才能清楚的把握循环中的各种细节。(这里选择左闭右闭(0 到 n-1))

low = 0 high = n-1 while(low<=high)

  • 双指针

双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

  • 滑动窗口

滑动窗口时间复杂度:O(n)

滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。

对于leetcode中这题 https://leetcode.cn/problems/minimum-size-subarray-sum/

i 为滑动窗口的左边 , j为滑动窗口的右边 , sum为滑动窗口内总和大小

当sum小于目标值, j就右移

当sum大于目标值, i就右移

  • 模拟行为

对于leetcode 中这题 https://leetcode.cn/problems/spiral-matrix-ii/

通过direct来表示移动的四个方向,通过index来改变方向。

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int k = 1;
        int i = 0;
        int j = 0;
        int[][] direct = {{0,1}, {1,0}, {0,-1}, {-1, 0}};
        int index = 0;
        while(k <=n * n){
            matrix[i][j] = k++;
            int direct1 = i + direct[index][0];
            int direct2 = j + direct[index][1];
            if(direct1<0 || direct1>=n ||direct2<0 || direct2>=n || matrix[direct1][direct2] != 0){
                index = (index + 1) % 4;
            }
            i = i + direct[index][0];
            j = j + direct[index][1];
        }
        return matrix;
    }
}

总结

标签:index,matrix,int,sum,随想录,数组,滑动,随笔
From: https://www.cnblogs.com/shijili/p/18049364

相关文章

  • 随笔记录篇——C++iostream库 以及std
    这篇文章非原创,来自我学习过程中看到的其他博主发的一些资料,解决了我的疑问,在此进行整理。C语言的标准输入输出库是stdio.h库,是一个函数库,而不是类库。其中包含了我们其中所用的scanfpringf都是一些独立的全局函数,因为C语言是不支持类的。C++的标准输入输出库iostream是一个类......
  • 学习随笔数据库
    SQL基本操作CREATETABLEt_book(idINT,NAMEVARCHAR(20),authorVARCHAR(10),priceDOUBLE);--查询数据select*fromt_book;--增加元素INSERTINTOt_book(id,name,author,price)VALUES(1,'三体','刘慈欣',99.9);INSERTINTOt_book(id,name......
  • 蓝图数组的操作
    基础使用数组元素获取查找项目元素添加,移除遍历数组......
  • 代码随想录算法训练营第三十四天| ● 860.柠檬水找零 ● 406.根据身高重建队列 ●
    柠檬水找零 题目链接:860.柠檬水找零-力扣(LeetCode)思路:注意对于20元的情况,有两种找零方式,            头一次见到这种情况,随便加一个标准输出才能通过的样例。classSolution{public:boollemonadeChange(vector<int>&bills){in......
  • 二维数组和坐标系的对应关系
    题目链接城堡问题这题需要你在二维数组上建立坐标系,并找出上下作用分别对应\((x,y)\)的变化关系。对应关系----------->y|||\/xCode#include<iostream>#include<cstring>#include<algorithm>#include<queue>usingnamespacestd;constintN=60;typed......
  • 代码随想录算法训练营day11 | leetcode 20. 有效的括号、1047. 删除字符串中的所有相
    目录题目链接:20.有效的括号-简单题目链接:1047.删除字符串中的所有相邻重复项-简单题目链接:150.逆波兰表达式求值-中等题目链接:20.有效的括号-简单题目描述:给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右......
  • 代码随想录 第十天 | ● 理论基础 ● 232.用栈实现队列 ● 225. 用队列实现栈
    队列的方法:添加元素:add(Ee):将指定的元素添加到队列的尾部,如果队列已满则抛出异常。offer(Ee):将指定的元素添加到队列的尾部,如果队列已满则返回false。移除元素:remove():移除并返回队列的头部元素,如果队列为空则抛出异常。poll():移除并返回队列的头部元素,如果......
  • log4net使用随笔
    问题背景使用log4net想根据不同的配置,根据业务场景自定义日志文件的写入此文解决的问题怎么开启log4net的调试日志信息怎么全局配置日志信息解决思路配置文件中增加一个appender,更换规则,查看是否能够做到写入指定的配置文件常见问题增加配置文件后,一直只使用默认......
  • 学习随笔Vue
    v-if:v-if是用于条件性地渲染HTML元素,根据表达式的值来决定是否将元素添加到DOM中。当表达式的值为true时,元素会被渲染到DOM中,当表达式的值为false时,元素不会被渲染到DOM中,也就是说元素会被完全删除。当条件频繁变化时,使用v-if适合,因为它能够完全销毁和重建元......
  • (33/60)K次取反后最大化的数组和、加油站、分发糖果
    K次取反后最大化的数组和leetcode:1005.K次取反后最大化的数组和贪心法思路两次贪心:(每次取反k--)排序,一次遍历,按绝对值从大到小地把负数取反。如果K次取反没用完,再排序一次,反复取反最小元素。(或者一开始就按绝对值从大到小排序,只需排序一次)复杂度分析时间复杂度:O(Nlo......