leetcode刷题日记:169. Majority Element(多数元素)和 171. Excel Sheet Column Number(Excel 表列序号)

FPGA图像处理之直方图均衡实现 直方图均衡的基本原理,就是对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行拉伸,而对像素个数较少的灰度值(即对画面不起主要作用的灰度值)进行合并,从而提高对比度,使图像清晰,达到增强的目的。综合以上两个条件,累积分布函数是个好的选择,因为累积分布函数是单调增函数(控制大小关系),并且值域是0到1(控制越界问题),所以直方图均衡化中使用的是累积分布函数。 阅读详情

169. Majority Element(多数元素)

坏办法

我不知道你看到这一道题目时想的是什么,我想的是创建一个大的数组然后去统计每一个元素出现的次数,这样我们就能够根据出现的次数去找出多数元素是哪一个元素,但是这一种方法的空间复杂度较高,因为我们不知道会出现多少个不相同的元素,所以我们事先进行开辟空间的时候就需要进行,事先进行一个估计,考虑到最坏的情况,我们的程序的空间复杂度会是 O ( n ) O(n) O(n),然后我们在遍历数组的时候记录下每一个元素出现的次数,在此期间需要频繁的进行查询操作(因为当前元素对应的次数存在开辟数组的哪个位置我们是不知道的),而在数组中进行查询操作的时间复杂度是 O ( n ) O(n) O(n)外层循环需要遍历n个元素,所以我们整个程序的时间复杂度会在 O ( n 2 ) O(n^2) O(n2),这显然效率比较低下。

好办法(注意使用条件)

我们想一下题目已经告诉我们了出现次数最多的哪一个元素在数组内出现的次数超过数组大小的一半。也就是说假设总共有x个元素的话,出现较多的元素的次数为m,其余元素出现的次数加起来为n,那么这三个数满足下面的关系:
m + n = x m > n m+n=x\\ m>n m+n=xm>n
也就是说 m − n > 0 m-n>0 m−n>0
我们看一下我们在数最多出现的元素的过程中,假设我们当前记录的元素就是出现次数最多的元素,记录这个元素出现的次数,然后每当碰到与当前记录的元素相同的元素,元素出现的次数就加1,反之就减1,如果出现的次数为0了就更换当前记录的元素,这样到最后加加减减,因为出现次数最多的元素次数 m > n m>n m>n所以最后记录的一定是数组中出现最多的元素。
注意:这种方法只适用于下面这种情况 m > n m>n m>n
我们可以写出如下代码:

int majorityElement(int* nums, int numsSize) {
    int num = nums[0];
    int count = 0;
    for(int i = 0; i<numsSize; i++){
        if(count == 0){
            num = nums[i];
        }
        if(nums[i]==num){
            count++;
        }else{
            count--;
        }
    }
    return num;
}

运行结果截图:
在这里插入图片描述

171. Excel Sheet Column Number(Excel 表列序号)

这一道题的姊妹题我已经分析过了,只需要反着进行操作就行了。
168. Excel Sheet Column Title(Excel表列名称)
可以写出下述代码:

int titleToNumber(char* columnTitle) {
    int length = strlen(columnTitle);
    for(int i=0; i<length/2;i++){
        char t = columnTitle[i];
        columnTitle[i] = columnTitle[length-i-1];
        columnTitle[length-i-1] = t;
    }
    int num = 0;
    for(int i=length-1; i>=0; i--){
        num *= 26;
        num += columnTitle[i] - 'A';
        num += 1;
    }
    return num;
}

运行结果截图:
在这里插入图片描述

PyRoki:机器人运动学优化库入门教程 PyRoki:模块化机器人运动学优化工具包 本文介绍了PyRoki,一个模块化、可扩展且跨平台的机器人运动学优化工具包。PyRoki通过统一变量和成本函数接口,简化了逆运动学、轨迹优化和运动重定向等任务的实现,支持CPU、GPU和TPU加速。实验表明,PyRoki在批量逆运动学任务中比现有GPU加速库cuRobo快1.4-1.7倍,且收敛误差更低。其模块化设计支持快速集成新成本函数,并通过交互式可视化工具优化参数配置。PyRoki开源发布,为机器人运动优化提供了灵活高效的解决方案。 阅读详情

相关推荐

在WPS/Office中免费使用AI,快速提升办公效率!​

《免费解锁WPS/Office AI办公神器教程》摘要: 本教程详解如何通过第三方插件OfficeAI免费实现WPS/Office智能办公,突破官方付费限制。从安全设置到安装配置,手把手教学,涵盖文档生成、PPT美化、Excel图表等核心功能。关键优势包括零成本、全场景支持及云端/本地双模式切换,并附常见问题解决方案。注意需使用WPS 2024+版本,安装时需临时关闭杀毒软件。教程强调工具来源合法性,建议商用购买正版授权。(149字)

杜哥无敌的博客 2307

动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100

将一个复杂问题拆分成多个规模更小的子问题,通过保存子问题的计算结果,避免重复计算,最终得到原问题的答案。先看一个经典问题。dp[i] = 以第 i 个元素结尾的最优结果例如最长递增子序列。最长递增子序列不一定以最后一个元素结尾,因此必须遍历整个数组取最大值。dp[i] = 前 i 个元素的最优结果这种情况下,最终答案通常就是dp[n]。关键在于理解 dp 数组的定义。动态规划的核心并不是背诵某个固定模板,而是建立正确的状态定义,并通过状态转移方程解决问题。dp[i] 或 dp[i][j] 表示什么?

zengjiajun2006的博客 888

YOLOv5s模型训练全流程解析:从数据准备到实战检测

本文详细解析了YOLOv5s模型训练的全流程,涵盖从环境搭建、数据准备与格式转换,到模型训练、参数调优及实战检测的完整步骤。文章提供了具体的代码示例和常见问题解决方案,旨在帮助开发者,特别是新手,高效掌握YOLOv5s模型训练的核心技术,并成功应用于实际检测任务中。

weixin_29041767的博客 335

力扣73 矩阵置零

该解法通过标记含0的行和列来实现矩阵置零。遍历矩阵,用布尔数组记录有0的行和列;再遍历一次,若当前行或列被标记,则置为0。时间复杂度O(mn),空间复杂度O(m+n)。

Pniubi的博客 34

西门子200SMART自定义库开发实战:从PID到露点算法的工业应用

本文详细介绍了西门子200SMART自定义库开发实战,涵盖从PID控制到露点算法的工业应用。通过代码封装技巧、多语言支持和性能优化等高级开发方法,帮助工程师提升PLC编程效率。文章特别强调了自创库在实际项目中的优势,如恒温恒湿控制系统的成功案例,展示了自定义库在工业自动化中的强大应用价值。

lake5的博客 1029

因果表示学习 (Causal Representation Learning, CRL)

传统的机器学习,尤其是深度学习,非常擅长学习数据中的相关性 (Correlation)。但它常常会走“捷径”,学到一些虚假的、不稳定的“表面联系”。一个AI模型在学习识别“牛”时,如果训练数据里所有的牛都在绿色的草地上,模型很可能会学到一个错误的规则:“牛 = 四条腿的生物 + 绿色背景”。你给它一张牛在海滩上的照片,它就可能不认识了。因果表示学习的目标,就是让模型超越这种表面相关性,去学习数据背后。

Xuxiansir的博客 1184

Hash表:两数之和、字母异位词分组、最长连续序列 [力扣 Hot100]

三道高频哈希表应用题:两数之和(利用HashMap快速查找补数)、字母异位词分组(排序后作为键分组)、最长连续序列(通过HashSet去重并仅从序列起点扩展)。核心思想均为借助哈希结构优化查找效率,避免重复计算。同时提及双指针等其他解法思路,体现算法设计中“空间换时间”的典型策略。

2403_87560480的博客 226

JumpServer未授权访问漏洞 CVE-2023-42442

JumpServer 是全球首款完全开源的堡垒机, 使用GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统。 JumpServer 使用Python / Django 进行开发。2021年1月15日,阿里云应急响应中心监控到开源堡垒机JumpServer发布更新,修复了一处远程命令执行漏洞。由于 JumpServer 某些接口未做授权限制,攻击者可构造恶意请求获取到日志文件获取敏感信息,或者执行相关API操作控制其中所有机器。

holyxp的博客 1426

LeetCode Hot 100 二叉树专题(三):BST 二叉搜索树与右视图(Java)

本专题主线:三题(98 / 230 / 199)共用两把钥匙——BST 的中序序列严格递增,以及遍历中的"层"与"深度"标记。看懂这两点,三题共用一套模板。 结构约定:每题统一分三部分——①题目分析与解题思路(含易错点辨析);②常见解法(附代码)及讲解;③知识点总结。

2401_88612756的博客 717

数仓建模—数据语义层

如今,企业产生大量数据,需要以正确的方式进行分析才能做出重要决策。数据可能来自多个来源并采用不同的格式,这使得清楚地了解其含义和重要性成为一项挑战。这就是语义层的用武之地。语义层存在于数据仓库和最终用户使用的应用程序之间。它为用户提供了简化且一致的数据视图,无论其基础数据源的复杂性如何。该逻辑层有助于映射物理数据结构以创建概念数据模型。它定义了数据元素之间的所有规则和关系,并以业务术语提供了数据的通用词汇表。然后,用户可以轻松地与数据进行交互,而无需了解其数据源的技术知识。

7万+

提示工程架构师干货:AI上下文工程在社交媒体舆情溯源中的应用

在舆情溯源中,“上下文”不是单一的“文本内容”,而是多维度、多源的信息集合溯源时间:从事件爆发到找到源头,只用了24小时(传统方法需要3-5天);溯源准确性:100%(通过人工验证确认);后续行动:品牌X发布了澄清声明,揭露了品牌Y的恶意行为,舆情在48小时内平息。社交媒体舆情溯源是一个“复杂的系统工程”,需要结合数据、模型、上下文理解。AI上下文工程的出现,让我们从“被动应对”转向“主动溯源”,从“模糊判断”转向“精准分析”。

Java大师兄的博客 813

LeetCode 3105.最长的严格递增或递减子数组:一次遍历

LeetCode 3105.最长的严格递增或递减子数组:一次遍历

<font color="Pink">Tisfy的博客</font> 189

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

perseverance51博客 4237

【双指针|LeetCode1089 复写零】巧用逆向思路,破解原地覆盖陷阱

LeetCode1089.复写零要求原地复写数组中的0,避免覆盖未读元素。正向遍历会因写入操作破坏后续数据,故不可行。正确解法为逆向双指针:先正向预处理确定目标末尾位置,再从后向前复写,遇0写两个0,非0则直接搬运。需特别处理0复写越界情况(仅保留一个0)。时间复杂度O(n),空间复杂度O(1),是原地数组操作的经典范例。

2602_95684935的博客 231

Camera2Demo

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

力扣240搜索二维矩阵(二分查找)

本文介绍在力扣240题“搜索二维矩阵II”中,对每一行独立使用二分查找的解法。通过遍历每行并调用二分查找函数判断目标值是否存在,若找到则返回true,否则最终返回false。该方法利用了每行有序的特性,时间复杂度为O(m log n),其中m为行数,n为列数。具体二分查找逻辑可参考作者主页中关于力扣35题“搜索插入位置”的实现。

Pniubi的博客 87

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

LeetCode100 94. 二叉树的中序遍历

中序遍历(左根右)通过栈实现,模拟递归过程。从根开始,不断向左走并压栈,直到左子树为空;弹出栈顶节点访问(根),转向其右子树重复流程。样例:1→2→3,遍历顺序为1→3→2。时间复杂度O(n),空间复杂度O(h)。

Shaoxingzong的博客 164

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

力扣35搜索插入位置(二分查找)

该题通过二分查找寻找插入位置。使用 mid = (left + right) >> 1 防止整数溢出,等价于 (left + right) / 2,但更安全。当 target <= nums[mid] 时,更新答案并继续向左查找;否则向右。最终返回最小的插入位置,时间复杂度 O(log n),空间复杂度 O(1)。

Pniubi的博客 195

动态规划入门 ( - 力扣509斐波那契数)

本文总结动态规划基础题型,以斐波那契数为例,系统讲解动归五部曲:定义dp数组含义、推导递推公式、初始化dp数组、确定遍历顺序、打印调试。强调理解核心思路比死记硬背更重要,通过简单入门题掌握通用解题框架,为后续背包、打家劫舍、子序列等问题奠定基础。

Pniubi的博客 168

力扣hot100-滑动窗口最大值

先提交了一版结果用二重循环超时了。我还奇怪不是【困难】吗?这里面因为要判断堆顶元素下标,所以用了pair,来同时存放元素和下标。然后我又学习了官方题解,大根堆的方法。学到了一个新的容器:大根堆。heap.top();// 查看最大的数,不删除。heap.pop();

m0_61483444的博客 235

Rust LeetCode334 算法题解

本文分析了 LeetCode 334 题“递增的三元子序列”的两种解法。暴力法(三重循环)时间复杂度为 O(n³),仅适用于小数据;最优解采用一次扫描贪心策略,维护 first(最小值)和 second(递增对第二元素的最小值),通过三个分支判断:若当前数大于 second,则存在三元递增子序列;否则更新 first 或 second。算法正确性基于不变式:first 始终为已遍历最小值,second 为可形成递增对的最小尾部。时间复杂度 O(n),空间复杂度 O(1),适用于大规模数据。

weixin_43379230的博客 248

LeetCode100+拓扑排序+多源BFS+矩阵置零

摘要(≤150字): 三题均考察算法优化与经典思想。矩阵置零通过利用首行首列作标记,实现O(1)空间原地操作;腐烂橘子问题用BFS模拟感染过程,结合新鲜橘子计数判断是否可全部腐烂;课程表问题通过拓扑排序检测有向图是否存在环,基于入度数组与邻接表判断课程依赖是否可行。三者分别体现标记法、广搜传播与图论拓扑的核心应用。

记录大学学习学习成长过程,欢迎各位一起交流 564

[ 力扣Hot100 ]:双指针

本文总结了力扣中四道经典双指针题:移动零(双指针交换非零元素)、盛最多水的容器(左右指针收缩求最大面积)、三数之和(排序+双指针去重)及接雨水(前后缀最大值计算)。通过双指针技巧,有效优化时间复杂度,提升代码效率,体现其在数组问题中的核心应用价值。

2403_87560480的博客 284

LeetCode 面试经典 150_位运算_只出现一次的数字 II(137_C++_中等)

LeetCode 面试经典 150_位运算_只出现一次的数字 II(137_C++_中等) 题目描述: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来解决此问题。

huayimenghan的博客 135

LeetCode.257.二叉树的所有路径

1.用一个共享的 path 数组记当前这条路上的节点值,每进入一个节点就先把它自己的值记进去。2.如果它左右孩子都空,说明这条路走到头了,就把 path 里的值按箭头格式拼成一条字符串,存进 result;3.不是叶子的话,有左孩子就往左递归,有右孩子就往右递归。4.递归完在函数末尾把刚刚记进去的那个值弹出来,退回到上一层,这样才能接着去走别的分支。

2603_96571045的博客 211

力扣 第527场周赛练习理解

1.先判断两个字符串中的字符出现次数是否相同,如果不同,那证明这两个无论怎么翻转都不可能完成问题,即return 0。1.先判断两个字符串中的字符出现次数是否相同,如果不同,那证明这两个无论怎么翻转都不可能完成问题,即return 0。3.在target中从往前循环找到第一个不是前者大于后者的即可证明它不是降序,而这个位置一定是最小min_i的位置。3.在target中从往前循环找到第一个不是前者大于后者的即可证明它不是降序,而这个位置一定是最小min_i的位置。两个字符串中其余位置的字符均相同。

目前主攻编程,目标是把屏幕上的红波浪线变成流畅运行的程序♪(^∀^●)ノシ 138

LeetCode Hop100 -- (76.最小覆盖字串)思路与总结

本文分享了字符串最小覆盖子串问题的解题思路。初始采用暴力枚举所有子串,时间复杂度高达O(m³),效率低下。通过分析发现内层循环存在重复判断,遂优化为滑动窗口法:用数组记录所需字符频次,右指针扩展至满足条件,左指针收缩以寻找最短有效子串。最终实现O(n)时间复杂度,代码更简洁高效。关键在于识别暴力中的冗余操作,进而选择合适算法优化。

NGEFF的博客 188
上一篇: leetcode刷题日记:168. Excel Sheet Column Title(Excel表列名称)
下一篇: leetcode刷题日记:190. Reverse Bits(颠倒二进制位)和191. Number of 1 Bits( 位1的个数)
apprentice_eye
博客等级 码龄6年 1165粉丝 348原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值