草庐IT

LeetCode - 三数之和

全部标签

【LeetCode: 12. 整数转罗马数字 + 模拟 + 有序表】

🚀算法题🚀🌲算法刷题专栏|面试必备算法|面试高频算法🍀🌲越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨🌲作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎🌲恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻🌲人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯🚀算法题🚀🍔目录🚩题目链接⛲题目描述🌟求解思路&实现代码&运行结果⚡模拟+有序表🥦求解思路🥦实现代码🥦运行结果💬共勉🚩题目链接12.整数转罗马数字⛲题目描述罗马数字包含以下七种字符:I,V,X,L,C,D和

【leetcode】移除元素

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️目录一.暴力求解法二.使用额外数组三.原地修改数组点击查看题目一.暴力求解法若我们不考虑时间复杂度,第一想到的方法应该都是暴力求解法吧:遍历数组,如果数组元素=val,用后面的元素将之覆盖。比较简单也不符合题意,就不写代码了二.使用额外数组第二种方法不符合题意,但由于能启发第三种方法,所以简单介绍一下先创建一个元素个数大于或等于nums数组的数组tmp,src和dst分别是数组nums和tmp的下标,初始化都=0,当nums[src]不等于val时,将之拷贝到tmp数组中,拷贝的位置为tmp[dst]

算法沉淀——模拟(leetcode真题剖析)

算法沉淀——模拟01.替换所有的问号02.提莫攻击03.Z字形变换04.外观数列05.数青蛙模拟算法是一种通过模拟问题的描述或场景来解决问题的算法。这种算法的核心思想是按照问题描述的规则,逐步模拟问题的发展过程,从而得到问题的解决方案。通常,模拟算法涉及到对问题的具体步骤进行逐一模拟,而不依赖于数学公式或高级的数据结构。在模拟算法中,通常需要考虑到问题的初始状态、模拟的步骤、状态的变化规律以及终止条件。这种算法的实现可以使用编程语言来逐一执行模拟的步骤,通常需要一些控制结构、循环和条件语句来进行模拟。虽然模拟算法可能在某些情况下效率较低,但它们通常具有直观、清晰、易于理解的特点,适用于一些实际

算法沉淀——链表(leetcode真题剖析)

算法沉淀——链表01.两数相加02.两两交换链表中的节点03.重排链表04.合并K个升序链表05.K个一组翻转链表链表常用技巧1、画图->直观形象、便于理解2、引入虚拟"头节点"3、要学会定义辅助节点(比如双向链表的节点插入)4、快慢双指针(判断链表是否有环、找到环的入口、找链表中倒数第n个节点等)链表常用操作1、创建新节点2、头插(比如逆序链表)3、尾插01.两数相加题目链接:https://leetcode.cn/problems/add-two-numbers/给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并

c++ - 检查两个无符号整数之和是否大于 uint_max

假设我有两个整数x和y,我想检查它们的和是否大于UINT_MAX。#defineUINT64T_MAXstd::numeric_limits::max()uint64_tx=foo();uint64_ty=foo();boolcarry=UINT64T_MAX-x该代码可以工作,但我想知道是否有更有效的方法-可能使用CPU具有的一些鲜为人知的功能。 最佳答案 在C++中,无符号整数溢出具有明确定义的行为。如果将两个无符号整数相加并且结果小于其中任何一个,则计算溢出。(结果总是比两者都小,所以你检查哪一个都没有关系。)#defineU

leetcode链表相关题目

文章目录1.移除链表元素方法1:方法22.合并两个有序链表3.链表的中间节点方法1方法24.反转单链表方法1方法25.分割链表6.链表中的倒数第k个节点方法1:方法2:7.环形链表的约瑟夫问题8.链表的回文结构9.相交链表方法1方法2:10.环形链表11.环形链表Ⅱ12.随机链表的复制链表学习完以后,来做点相关题目吧1.移除链表元素方法1:在原链表的基础上直接删除指定元素若当前节点是要删除的节点,则将其前驱节点指向当前节点的下一个节点若当前节点不是要删除的节点,前驱节点指向当前节点,当前节点后移特殊情况:循环判断,若头节点是要删除的节点,则将头节点后移头节点不为空structListNode*

算法学习|Day15-二叉树|Leetcode102二叉树的层序遍历,Leetcode226翻转二叉树,Leetcode101对称二叉树

目录一、Leetcode102二叉树的层序遍历题目描述解题思路方法:长度法总结二、Leetcode226翻转二叉树题目描述解题思路方法一:递归方法二:层序遍历总结三、Leetcode101对称二叉树题目描述解题思路方法:递归总结一、Leetcode102二叉树的层序遍历题目描述给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root=[1]输出:[[1]]输入:root=[]输出:[]题目链接:力扣题目链接解题思路层序遍历使用队列控制每层的数量

c++ - 最大化二分法的 GCD(最大公约数)之和?

给定一个正数数组。我想将数组拆分为2个不同的子集,以使它们的gcd(最大公约数)之和最大。示例数组:{6,7,6,7}。答案:需要的两个子集是:{6,6}和{7,7};它们各自的gcd(s)是6和7,它们的sum=6+7=13;这是可能的最大gcd总和。Gcd:{8,12}的Gcd是{4},因为4是8和12的最大数。注意:gcd(X)=X如果子集只包含一个元素。我的方法:通过暴力破解,找到数组所有可能的子序列,然后找到最大和,但如果输入大小大于30个数字,这将不起作用。我正在寻找更有效的方法。Extra(s):任何输入数字的最大大小为10^9,时间限制:-1s似乎不错,输入的大小可能与

代码随想录算法训练营第7天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和

454.四数相加||思路:把四个数组分为两个一组,遍历a,b,并把a+b的值存储在map中,key记录a+b的值,value记录a+b出现的次数。若要四数相加为0,则c+d与a+b需要互为相反数,即a+b=-(c+d),然后遍历c,d并在map中查找是否有a+b=-(c+d),若有则把key为-(c+d)或a+b的value(该值出现的次数)加入计数器.时间复杂度为O()本题用map的好处是当出现索引下标值比较大时,不会像数组需要定一个很大的空间。代码:intfourSumCount(vector&nums1,vector&nums2,vector&nums3,vector&nums4){un

LeetCode动态规划的解题思路

动态规划动态规划,其实就是找规律,总结公式/方程。动态规划,类似于数学归纳法。关键的思想在「自底向上」和「空间换时间」。动态规划,可以使用一维数组,有时也会用到二维数组。应用场景“动态规划”可以用于子序列、最大/小值问题、回文子串的求解。一维数组dp[i]的动态规划的几个步骤:确定数组dp[i]的下标i以及dp[i]值的含义,比如经典的LeetCode70爬楼梯,爬到第i层楼梯,有dp[i]种方法;确定动态规划的状态转移方程(递推公式)。比如,爬楼梯的公式:dp[i]=dp[i-1]+dp[i-2];dp数组的初始化:初始化值,dp[0]的值是多少,dp[1]的值又是多少;确定遍历顺序:分析递