Leetcoee 697. 数组的度——————自写程序overtime,未优化—————————进阶方法滑动窗口

图形引擎实战:镭射效果制作分享 该方案的优势1.遵循物理的2.可以使用少量的参数去调控镭射的效果。计算相对简单,缺点仍是颜色不能够自定义,还有一种常见的方案是采样一张镭射贴图来模拟,好处是颜色可以自定义同时性能上还很高效没有复杂的公式计算。我查阅了网上普遍的方案,常见的做法是制作一个Ramp图生成工具,然后将生成好的ramp图赋给材质。这两个方案的好处是美术同学可以手动的去控制镭射的颜色。最后就是Shader中对Ramp图的采样的部分,Ramp图的UV坐标是使用fresnel作为Ramp的U轴坐标,0.5作为V轴坐标。 阅读详情

给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。
你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。
在这里插入图片描述
题目地址:数组的度
或直转到:https://leetcode-cn.com/problems/degree-of-an-array/

  • 我的错误题解
//数组的度,利用对应数组(类哈希表)一次走完
//经过仔细读题之后,发现这道题没有想的那么简单
//求出数组的度只是第一步,在度求出后,要求出与当前数组度相同的最短子数组的度的数量
//很明显,最短的子数组一定是由两个对应频数最高的数字作为边界
//现在的目标很明显了,在直到数组频数的情况下,得到这个边界值。
//得到边界值的方法
//——————————————————————————————————————————————————
//我发现了我的算法缺陷,即将元素大小作为角标并不理智,题目没有标记数组小元素大不可以
//我要进行修改
//我修改进了,增加了移动的类指针指向出现频率最高的数字的两端。
//我发现了我的算法缺陷,因为若出现多个频率一样的数字我无法判断两次进行比较。
int getdistance(int* nums,int numsSize,int maxone) {//得到出现次数最多元素的最小角标和最大角标
    int _minipt,_maxpt;//用来记录边界的指针
    _minipt=50000;
    _maxpt=0;
    for (int p = 0; p < numsSize; ++p) {
        if(_minipt>p&&nums[p]==maxone){
            _minipt=p;
        }
        if(_maxpt<p&&nums[p]==maxone){
            _maxpt=p;
        }
    }
    return (_maxpt-_minipt+1);
}

int findShortestSubArray(int* nums, int numsSize){
    int* pt;
    int max;//取到最多的出现次数
    int jb;//角标
    int zuihouxuanze;//最后用来接收最大值的

    zuihouxuanze=50000;
    jb=0;
    int maxsize;//可能会造成内存使用太多,不过一定可行
    int* sz;
    //
    sz=(int*)malloc(sizeof(int)*(numsSize+1));//负责装着频率最高的数字组
    for (int l = 0; l < numsSize; ++l) {
        sz[l]=-1;
    }
    max=0;
    maxsize=0;

    if(numsSize>1){
        for (int j = 0; j < numsSize; ++j) {
            if (maxsize<nums[j]){
                maxsize=nums[j];
            }
        }//得到元素最大值,这里其实可以继续优化,我不想写了,懒了
        //不需要进行模块化
        pt=(int*)malloc(sizeof(int)*(maxsize+1));//创建键值空间
        for (int i = 0; i < maxsize+1; ++i) {
            pt[i]=0;
        }//初始化键值数组
        //不需要进行模块化
        for (int q = 0; q < numsSize; ++q) {
            pt[nums[q]]++;
        }//记录每个元素出现的次数
        //不需要进行模块化
        for (int k = 0; k < numsSize; ++k) {
            if (max<pt[nums[k]]){
                max=pt[nums[k]];
            }
        }//看看哪个元素出现的最多
        //这里是分界线,也是我需要进行二次扫描的
        //这里得到了最高频率数字,但相同频率的可能出现多次
        if(max==1){
            return 1;
        }//最大的只有单次频率就别扫描了,浪费资源
        for (int k = 0; k < numsSize; ++k) {
            if (max==pt[nums[k]]){
                sz[jb]=nums[k];
                jb++;
            }//从这里降低时间复杂度吧。
        }//用一个数组装下同为最大频数的数字
        jb=0;
        while(sz[jb]>=0){
            sz[jb]=getdistance(nums,numsSize,sz[jb]);
            jb++;
        }
        for (int i = 0; i < jb; ++i) {
            if (zuihouxuanze>sz[i]&&sz[i]>0){
                zuihouxuanze=sz[i];
            }
        }

        //new func
        return zuihouxuanze;
    }
    else{
        return 1;
    }
}

分析我的做题思路:
1、为了得到数组的度,首先要得到出现频率最多的数字。为了得到出现频率最高的数字,我决定使用键值的形式。即创建一个数组,对应角标处存储的数据大小就代表着对应角标数字出现的次数。例:pt[50]=6 就代表数字50出现了6次 。为利用这种形式,就需要调用很多空间,我当时也没想太多,搞就完事了。具体也分这么几步:得到最大数字,创建最大数字+1大小的空间,利用键值对数组进行扫描,然后对键值数组进行扫描,得到一个对应键值数组最大数字的角标,角标即出现频率最高或最高的之一。
2、这里其实可以通过这个最高频率再次对键值数组进行扫描,将所有出现频率均为最高的数字记录,以便后续的操作。之后我排除了一种情况,即所有数字的出现频率都是1,那度肯定就是1了。接下来就确实是对其进行了一次扫描,利用sz装卸所有同为最大频数的数字。
3、既然得到了出现频数均为最高的数字的数组,那直接就看大家能代表的最短子数组为多少。这时候就利用到了"getdistance"函数,计算距离存入数组中,只需要将最短距离取出就可以得到数组的度了。可这期间进行了多次n循环,大大提高了时间复杂度,进而提高了程序运行的时间。一个全是1的例子也让我彻彻底底的傻了。

优化嘛~先不谈,然我们看看大佬的思路

  • 大佬的代码
int cnt[50000];
int findShortestSubArray(int* nums, int numsSize){
    int i         ;
    int l      = 0;
    int r      = 0;
    int maxCnt = 0;
    int res    = numsSize;
    memset(cnt, 0, sizeof(cnt));
    /* 计算数组的度(出现最多元素的次数) */
    for (i = 0; i < numsSize; i++) {
        maxCnt = fmax(maxCnt, ++cnt[nums[i]]);
    }
    
    /* 双指针实现, 当窗口内的度等于maxCnt, 收缩窗口 */
    memset(cnt, 0, sizeof(cnt));
    for (r = 0; r < numsSize; r++) {
        cnt[nums[r]]++;
        while (cnt[nums[r]] == maxCnt) {
            res = fmin(res, r - l + 1);
            cnt[nums[l++]]--;
        }
    }
    return res;
}

整体思路运用了神奇的滑动窗口机制,是个我在《计算机网络》中遇到过的机制,可惜没有扩展,这里我要仔细思考一下。这个编程思路真的值得借鉴。
1、计算数组的度,即得到数组中出现最多的元素次数。这里作者运用了memset进行初始化,利用fmax与灵活的自增来计算数组中出现最多次数的元素。这里注意maxCnt初始值为0 。每次都取到最大值,可以注意到cnt[nums[i]]就是我说的键值操作。
/最开始是maxCnt是0,在每一次对应键值的自增中,maxCnt总是对应的出现频率最高的数字的出现频率/
2、得到maxCnt后。就可以进行滑动窗口了。然而,拥有最高出现次数的数字并不一定只有一个。我们要想一个办法来对所有出现最高次数的数字来求本数组拥有出现频率最高数字的最短子数组。
3、作者的想法很巧妙,他再次将cnt初始化,原来装的是各个数字出现的次数,不过我们得到了数字出现的最高次数了(即maxCnt)。只需要利用for循环,再求一次每个数字的出现次数,一旦出现次数与maxCnt相等,就求res,而res的变化和 l 变量有关。下面我们要仔细分析cnt[nums[l++]]-- 每次运行这段代码都伴随着变量 l 的自增,与对应数字出现次数的自减,这个是上面cnt[nums[r]]++的一个逆过程,不过方向是正着的。一直到nums[l++]再一次等于当时的nums[r],则触碰到了这个边缘,即最短子数组。
可是这里有一个问题了,若一个数组有多个频率都是一样高的数字该怎么办呢?就比如第一个例子{1,2,2,3,1} 。这里我们可以看出利用这个方法,可以完美的进行求解
可能的穿插情况可以简化为1212、1221、1122,我们发现除了1221另外两种都可直接用这段滑动窗口求解,然而1221中22肯定是短于1221的,因此这段代码可以直接取到最小值。我只能说妙啊,太妙了。这也太能滑了。

STM32实战篇:使用USART发送/接收数据 在发送字符时也可以直接使用其对应的ASCLL码,例如: USART_SendData(USART1, 0x61); 阅读详情

相关推荐

weblogic等保测评操作过程

weblogic网络安全等级测评保护操作

qq_48257021的博客 2756

程序运行时间为0的问题

今天为了检测自己某些功能模块的时间消耗,发现使用了好几种方法,得到的时间都是0 ,后来才发现是因为消耗的时间太少了,一般常用的方法得到的时间精度不够,下面分享一下我的学习历程。 1.一开始使用GetTickCount();,测试结果为0,具体代码: DWORD dwStart = GetTickCount(); DWORD dwStart = timeGetTime();

p784518217的博客 5651

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8753

Leetcode 322. 零钱兑换——DP问题总结————重复书写硬币问题

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 原题地址:零钱兑换 或直转到:https://leetcode-cn.com/problems/coin-change/ 由于直接上动态规划中等难度的题我有点晕,这直接借鉴一下知乎大佬的文章,并加入自己的理解。 先上代码 int min(int a, int b) { return a &lt.

小学生高某的博客 609

Docker离线部署OpenWebUI操作步骤

docker离线部署openwebui

m0_49333265的博客 4346

【全解析 | PTA】浙大版《Python 程序设计》题目集-第一章

Python浙大版PTA题解

wzhh_的博客 5526

2019年7月26日 今天对Unity进行一些基础上的的理解和巩固

过去上来就是一些应用,现在是对基础知识的学习和已许欸知识的巩固。 一、窗口界面 Scene 场景编辑窗口 小手图标:拖动屏幕并进行移动 指针图标:移动选择物体的唯一 旋转:相对旋转 修改:改变物体的scale 在Scene中一直按着鼠标右键可以对视角进行旋转,期间按照asdw可以进行视角的移动,按qe可以升高或者降低视角 Game 游戏呈现画面 游戏运行当中修改不会存盘,且游戏窗口左上角可...

小学生高某的博客 580

9、硬件工程师笔试面试知识器件篇——三极管(2025版本)

本文全面介绍了三极管的基础知识与应用,包括其结构、类型、工作原理、工作状态、功能、应用场景及特性参数。详细探讨了三极管在信号放大、无线通信、音频设备及医疗设备中的具体应用,并深入分析了设计放大电路时如何平衡增益与噪声、优化偏置电路以提高稳定性、使用负反馈改善性能等关键问题。此外,文章还涵盖了高频电路设计、温度补偿策略、电磁干扰防护等实用内容,为硬件工程师提供了全面的技术参考和设计指导。

XU157303764的博客 7310

2019年7月28日 恶心人

今天我一个早上都在debug,一个bug,弄了我一天多。角色为什么在静止的时候速度不为0? ` 以下是更新函数 {//移动 pendingVelocity.z = 0f; cc.Move(pendingVelocity * Time.deltaTime); animator.SetFloat("Speed", cc.velocity.magnitude); an...

小学生高某的博客 563

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

基于MATLAB的数字滤波器之低通滤波器

本文首先介绍了数字低通滤波器的概念和原理,其次论述了低通滤波器的技术指标和设计步骤,最后给出了数字低通滤波器应用于信号去噪的MATLAB代码。

总结论文中的算法并给出论文的复现代码 3万+

2019年7月20日学习日记

嘻嘻,坚持下来了,第六天,第四个游戏也完成了。其中其中真的有好多艰辛,加油。 下面的总结接上19号的博客。之前已经实现了大部分,得分以及游戏结束的UI已经设置了,差的不多了。今天遇到了让我脑袋爆炸的几个问题。首先,先从简单的说起。由于这个游戏是闯关游戏,我们要设置障碍。因为物体的运动是最基本的,我们最先对物体运动以及基本碰撞是没毛病的。在此基础上我们设置关卡。 先是对模型的拖拽,组成一个通道,其中...

小学生高某的博客 534

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2170

2019年7月21日学习日记

今天今天小bug弄了我我半天,得了,这第四个游戏是半成品,不过也要把今天累计的经验和教训总结一下。 1、拉入场景,拉入新相机,拉入新角色 2、仔细一看,这次给的场景和我们做flappybird时候给的有异曲同工之妙,都是两块,再仔细想,这次我们也要执行拼接和背景的平移以完成道路一直有的任务。 3、其次拉入的任务要创建新的根节点装上去,并且创建collider和rigidbody,并提前把anima...

小学生高某的博客 502

android 蓝牙通讯demo

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

深度学习工具包 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")

2019年7月18日 学习日记

由于今天没有边看视频边写,事情有一点多,我就在一起总结了。这第三个游戏是横版跳跃游戏,其实仔细想想和第三个游戏差不多,其模型的给予大大降低了我们制作游戏的难度。我会从第一步到最后一步慢慢滤清思路,而不像昨天一样列出重点后写一坨。44:30 加入材质包 拉入过关所需台阶,并赋予其不同颜色,tag也要改变,以便于做出区别。游戏的规则是人和台阶不同颜色的时候会死,因此设置触发器也要有相应的判断依...

小学生高某的博客 434

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Leetcode 91. 解码方法——————从我刷了五十多道力扣后决定从C转向C++再由这题让我下定先好好学习算法的那些事

一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为: “AAJF” ,将消息分组为 (1 1 10 6) “KJF” ,将消息分组为 (11 10 6) 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。 给你一个只含.

小学生高某的博客 411

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2019年7月23日 学习日记

今天是放松的一天,没有学习,除了晚上把昨天的博客给补完了。

小学生高某的博客 398

2019年7月19日 学习日记

唉,今天的事情好多,压得我喘不过气,亲人的生日父母的思念哥们生病朋友的烦心事和组织内的人员动荡。影响了学习进度,让我脑袋晕晕的。这里我简单的对今天的学习做一下总结。 今天我学习做的是一个轻量版的flappy bird,从最开始的3d到如今的2d。感觉今天竟然比昨天简单,应该是有了基础并且真的是横版的入门。首先是3d背景的删除,是在window中的lighting选项,之后就要创建我们的游戏背景,分...

小学生高某的博客 389

2019年7月16日学习日记

** 2019年7月16日学习日记 ** Morning 今天主要学习前两个小游戏的制作,没有昨天那个游戏那么复杂,显得没有基础做起来比较费劲。今天是第一次用外接显示屏学习,以前都是直接用作放大的屏幕。win10对于外接显示屏有很好的兼容性,在滑动过程中虽然有一些累手腕,却没有什么不适感。能打打提高学习效率。 相比昨天做的横版过关游戏,今天这个简单多了。主要分为几个步骤。 第一步 第二步 ...

小学生高某的博客 381

2019年7月24日 学习日记

上一次(22日的学习日记中)我们最后提到了AI的制作,其实利用了时间的推移并把动作数据化按照参数传入方法,其中也不乏随机数。当然也有死亡时候特效的体现,复习了Instantiate方法的调用 ...

小学生高某的博客 375

2019年7月22日 学习日记

说实话今天是二十三号,不过我在补二十二号的博客,现在已经是晚上了,今天也发生了很多有趣的事情比如遇到了打伞也没有用的雨,倔强的我就算全身湿透也不愿放弃外出欣赏风景的机会,于是我买了一身新衣服加人字拖,松花江畔独自小酌。享受孤独和美好的景色也是生活的一部分。 让我们来进行一个回忆,这个过程可能和我第一天的日记有一些重叠,不过不要在意,因为这是我从第一个游戏又做到第六个游戏了,刚开始我直接做第六个游戏...

小学生高某的博客 360

Leet Code 1816. 截断句子

句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。 例如,“Hello World”、“HELLO” 和 “hello world hello world” 都是句子。 给你一个句子 s​​​​​​ 和一个整数 k​​​​​​ ,请你将 s​​ 截断 ​,​​​使截断后的句子仅含 前 k​​​​​​ 个单词。返回 截断 s​​​​​​ 后得到的句子。 我的题解 char * truncateSentence(char * .

小学生高某的博客 338

C语言学习日记2021年3月21日

今天做题遇到了几个点,晚上系统地说一下。 与运算和或运算可能考的比较灵活,即可能在&&两边放式子,判断的式子会进行运算 忽略大小写比较字符串大小,大写字母和小写字母之间ASCII码差32,若第一个字符不一样,比较其字符ASCII即可,若一样,则一直找到第一个不一样的进行比较。 遇到了一道阴间改错,即输出字符串中连续出现两次以上的字符。不管错没错,其程序逻辑都和我的编程逻辑完全相悖。 百元买百鸡问题,for嵌套for,z由前两个for循环的变量确定,最后别忘了考虑小鸡的取整 最大公约数求法,

小学生高某的博客 306

2019年7月17日学习日记

** 第三天 ** 见天天气好晴朗处处好风光。早上好,今天刚打开U3d就出现了了一件不愉快的事情,打开相应的项目后材料包脚本包还在,而scene中的各个控件却不在了。这里就需要我们在Assets选项中选择我们已经创建的U3d类型文件,让其于scene同步。好的接下来让我们继续昨天的学习。 一转眼,上午已经过去了,拿出最后的半个小时做一下总结。让我们看看我们的程序中多出来了什么! 昨天我们刚刚实现了...

小学生高某的博客 303

【数据结构】基于比较的排序算法 - 交换排序

本文介绍交换排序中的冒泡排序与快速排序。冒泡排序通过相邻元素比较交换,实现升序,时间复杂度最坏为O(N²),空间复杂度O(1),稳定且适合小规模有序数据。快速排序采用分治思想,以基准值划分区间,平均时间复杂度O(N log N),空间复杂度O(log N),但不稳定,实际应用中性能优异,可通过随机基准、小区间优化等提升效率。

careathers的博客 317

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 242
上一篇: Leetcode 2. 两数相加
下一篇: Leetcode_448. 找到所有数组中消失的数字(自贱)
Neepu_G.job
博客等级 码龄8年 7粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值