LeetCode
文章平均质量分 56
莫浅子
这个作者很懒,什么都没留下…
展开
-
贪心c++(结合LeetCode例题)
有1元,5元10,元,20元,100元,200,元的钞票无穷多张。先使用这些钞票支付x元支付x元,最少需要多少张?列如,X= 628最佳支付方法3张200的,一张20的,1张5块的,3张一块的,共需要8张直觉告诉我们:尽可能的多实用面值较大的钞票贪心:遵循某种规律,不断贪心的选取当前最优策略的算法设计方法为什么这么做是对的,面额为1元,5元,10元,20元,100元,200元,任意面额是比自己小的面额的倍数关系。原创 2022-10-05 12:31:51 · 1612 阅读 · 10 评论 -
LeetCode376摆动序列 c++贪心
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。原创 2022-09-22 20:38:32 · 177 阅读 · 4 评论 -
LeetCode455分发饼干c++贪心解法
如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。2、从小到大的顺序使用各个饼干尝试是否可以满足某个孩子,每个饼干只尝试1次,若尝试成功,则换一个孩子尝试,知道发现没更多孩子或者没更多的的饼干,循环结束。2:某个孩子可以更小的饼干满足,没必要用更大的糖果满足,因此可以保留更大的饼干满足需求因子更大的孩子(贪心)3:孩子的需求因子更小更容易满足,姑优先从需求因子小的孩子尝试,可以得到正确的结果。1:某个饼干不能满足某个孩子,则饼干也不一定满足需求因子更大的孩子;原创 2022-09-22 20:35:00 · 189 阅读 · 0 评论 -
LeetCode82. 删除排序链表中的重复元素 II(c++详解)
2)由于这里可能会出现第一个头结点就重复所以我们需要新设置一个结点指向头结点,不然删除第一个头结点后面的元素就会丢失,我们设置俩个指针,指向我们新设置的这个结点new_head,pre这个指针的作用是帮我们探路,如果发现这个结点满足条件是等于1的那么另一个指向new_head 的结点就把它的next指过来。1)我这里用的是,先常规的去遍历找到重复出现过得数,如果这个数重复出现了,那么nums的值就会大于一;删除原始链表中所有重复数字的节点,只留下不同的数字。给定一个已排序的链表的头。原创 2022-09-20 20:32:05 · 571 阅读 · 4 评论 -
LeetCode排序链表C++解法(详解)
这里面自己写的时候有个bug,就是 q->val =*it 和 q = q->next 的位置调换,倒置会出现q在最后指向的时候出现指向为空的情况。我以为链表的头结点不存值,所以没有先让头结点next了一下。这里面通过遍历链表,将所有值放到这个数组里面。3)在通过遍历将数组里面的值依次放到链表中。1)取出链表里面的元素放到数组里面。2)利用sort函数讲其排序。原创 2022-09-19 21:44:29 · 421 阅读 · 1 评论 -
剑指 Offer 30. 包含min函数的栈C++(详解)
设置俩个栈,一个数据栈存放数据元素,另一个最小值栈,把最小的值放进去,,那么把此时最小值栈的栈顶元素赋值给x,最终统一的把x放进去就行)注意(代码的实现方式比较巧妙,如果插入的x大于。,如果小于则把这个元素放到最小值栈上去。1、如果栈为空,直接x同时放入。2 、将要放进去的元素与。进行比较,如果不满足小于。原创 2022-09-17 16:43:39 · 560 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列C++
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )原创 2022-09-17 15:55:02 · 154 阅读 · 0 评论 -
刷LeetCode链表之前你需要掌握的设置结点技巧C++
在c++的线性表中,如何用ListNode设置好结点呢?我们往往因为不熟悉指针和内存分配的原理,而在初学阶段不能正确的设置好结点,我总结了三种不同情况设置结点的情况,这里引用LeetCode的几个题目为例。原创 2022-09-15 20:33:56 · 297 阅读 · 6 评论 -
C++解LeetCode232. 用栈实现队列(适合基础薄弱)
说明:你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。原创 2022-09-07 12:38:00 · 180 阅读 · 0 评论 -
C++解LeetCode225. 用队列实现栈(适合基础薄弱)
你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。1、这个队列不能直接push进元素,因为栈最后放进去的元素是栈顶,而队列最后放进去的元素是尾。3、把主队列的元素放进临时队列。原创 2022-09-06 20:42:21 · 480 阅读 · 0 评论 -
LeetCode1290 二进制链表转整数C++解法(vector实现)
给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。二进制数 (101) 转化为十进制数 (5)请你返回该链表所表示数字的 十进制值。原创 2022-09-05 10:39:21 · 452 阅读 · 0 评论 -
LeetCode203题移除链表元素C++解法(适合基础薄弱)
如果采用方法2,temp的后序操作需要用到 " . " ,比如temp.next ,temp.val;设置一个临时结点temp,再 pre指向temp,temp的后继为head。注意:想要实现这个操作有俩种实现方法·,请你删除链表中所有满足。给你一个链表的头节点。原创 2022-09-04 12:53:03 · 382 阅读 · 0 评论