草庐IT

leetcode刷题(3)

全部标签

【C++刷题】动态规划

文章目录前言一、斐波那契系列1.第N个泰波那契数2.三步问题3.使用最小花费爬楼梯4.解码方法5.不同路径6.下降路径最小和7.地下城游戏二、多种状态系列1.按摩师2.打家劫舍II3.删除并获得点数4.粉刷房子5.买卖股票的最佳时机6.买卖股票的最佳时机III三、子数组和子串系列1.最大子数组和2.环形子数组的最大和3.乘积最大子数组4.等差数列划分5.最长湍流子数组6.单词拆分7.环绕字符串中唯一的子字符串四、子序列系列1.最长递增子序列2.最长递增子序列的个数3.最长定差子序列4.最长的斐波那契子序列的长度5.等差数列划分II-子序列五、回文子串/子序列系列1.回文子串的个数2.分割回文串

【LeetCode】剑指 Offer <二刷>(2)

目录题目:剑指Offer04.二维数组中的查找-力扣(LeetCode)题目的接口:解题思路:代码:过啦!!!题目:剑指Offer05.替换空格-力扣(LeetCode)题目的接口:解题思路:代码:过啦!!!写在最后:题目:剑指Offer04.二维数组中的查找-力扣(LeetCode)题目的接口:funcfindNumberIn2DArray(matrix[][]int,targetint)bool{}解题思路:这道题一上来呢,作为暴力选手还是能一下想到暴力解法的,就是直接暴力枚举全部值查找即可,不过这道题非常的经典,所以我也直接能够想到他的优化解法,至于我是怎么想到的,做的题多自然就能想到了

LeetCode 1.两数之和

给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]Python最容易想到的方法是枚举数组中的每一个数x,寻找数组中是否存在target-x当我们使用遍历整个数组的方式寻找target-x时,需要注意到每一个位于x之前的元素都已经和x匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在x后面的元素中寻找targe

leetcode做题笔记141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。否则,返回 false 。思路一:循环一定次数判断是否结束c语言解法boolhasCycle(structListNode*head){inti=0;while(inext;i++;}returntrue;}分析:本题要判断链表中是否有环,可以直接遍历一个较

每日刷题-6

目录一、选择题二、算法题1.Fibonacci数列2.合法括号序列判断一、选择题1、解析:内联函数是一种可以提高函数执行效率的方法,它的原理是编译时在函数调用点直接展开函数体的代码,从而避免了函数调用的开销。但是,内联函数也有一些限制和缺点,比如:内联函数不能包含复杂的结构控制语句,例如循环语句和switch语句,否则会导致代码膨胀和效率降低。内联函数不能是直接递归函数,即自己内部还调用自己的函数,否则会造成无限循环或栈溢出。内联函数的定义必须出现在内联函数第一次被调用之前,否则编译器无法展开函数体。内联函数只是对编译器的一个建议,编译器可以根据函数的复杂度和调用频率来决定是否真正进行内联。因

【HDLBits 刷题 1】Verilog Language(1)Basics 部分

目录 写在前面BasicsSimplewire Fourwires Inverter ANDgate NORgate Declaringwires 7485chip写在前面HDLBits作为Verilog的刷题网站,非常适合初学者拿来练习,不仅可以学到基础的语法,还可以让自己写出的代码更直观,直接映射到电路中,因此在这段时间每周会抽出一点时间来把这个网站的题目刷一遍,用博客的方式记录自己的刷题经历。由于前面几节题目比较基础,所以只展示结果代码和仿真波形,每道题复制题目浏览器翻译部分,有些翻译的比较蹩脚,具体的细节就不再赘述。BasicsSimplewire创建一个具有一个输入和一个输出的模块,

【C刷题】day2

一、选择题1、以下程序段的输出结果是()#includeintmain(){chars[]="\\123456\123456\t";printf("%d\n",strlen(s));return0;}A:12B:13C:16D:以上都不对【答案】:A【解析】:考点:转义字符\\表示反斜杠,取消转义的作用\123表示八进制的123\t表示水平制表符,相当于Tab键这些都是算一个字符,其他都是单独一个为一个字符,故为12个2、若有以下程序,则运行后的输出结果是()#include#defineN2#defineMN+1#defineNUM(M+1)*M/2intmain(){printf("%d\

leetcode刷题300+能通过算法面试吗?面试200+经验分享高效解题思维,四周搞定大厂算法面试!...

“Leetcode明明吐血刷了400题,还是没能通过大厂面试”,原因到底出在哪!!这是今年很多春招失利同学给我私信最多的问题,题也刷了…肝也爆了…还是被现实狠狠的给了一巴掌!身为面试超200人前FB面试官,这个问题我比你清楚!首先要清楚一点:刷题的目的是通过应试,重点不在于“数量”,而在于方法+捷径,找对学习方法,拿到offer真不是什么难事!从面试官角度来看,算法可以看出应聘者的解题思路,以及迅速变成代码的能力。比如一些二叉树相关题目,就能体现面试者对数据结构的熟练度以及分析算法复杂度的能力。企业考算法并不是为了一个答案,综合考察和验证应聘者的基本功是否扎实,反应是否敏捷,这些在对方解答一道

【算法】二分查找算法——leetcode二分查找、搜索插入位置

文章目录二分查找704.二分查找35.搜索插入位置二分查找  二分查找算法是一种在有序数组中查找特定元素的搜索算法。算法的工作原理是,通过比较数组中间元素和目标值,如果目标值等于中间元素,那么查找结束。如果目标值小于或大于中间元素,则在数组的前半部分或后半部分进行查找。此过程将一直持续到找到目标值,或者搜索范围为空。  需要注意的是,二分查找算法只适用于已排序的数组。如果给定的数组是无序的,那么在进行二分查找之前,需要先对数组进行排序。  以下是一个朴素二分查找算法的步骤:  (1)选择数组的中间元素。  (2)如果中间元素正好是要查找的元素,则搜索过程结束。  (3)如果要查找的元素大于中间

Leetcode 220. Contains Duplicate III (Sliding window + set)

ContainsDuplicateIIIHardYouaregivenanintegerarraynumsandtwointegersindexDiffandvalueDiff.Findapairofindices(i,j)suchthat:i!=j,abs(i-j)abs(nums[i]-nums[j])Returntrueifsuchpairexistsorfalseotherwise.Example1:Input:nums=[1,2,3,1],indexDiff=3,valueDiff=0Output:trueExplanation:Wecanchoose(i,j)=(0,3).Wesa