草庐IT

Leetcode刷题第六周

全部标签

leetcode动态规划(零钱兑换II、组合总和 Ⅳ)

518.零钱兑换II给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。示例1:输入:amount=5,coins=[1,2,5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例2:输入:amount=3,coins=[2]输出:0解释:只用面额2的硬币不能凑成总金额3。示例3:输入:amount=10,coins=[10]输出:1注意,你可以假设:01硬币种类不超过500种结果符合32位符号整数思路这是一道典型的背包问题,一看到钱币数量不限,就知道这是一个完全背包。对完全背包还不了解的

计算机网络(第三版) 胡亮 课后习题 第六章答案

计算机网络(第三版)胡亮课后习题第六章答案1、在OSI模型中,哪一层位于资源子网和通信子网之间?传输层,为整个协议层次中最核心的一层。2、传输层的具体功能有哪些?端到端的报文传递。在传输终点需要监管一个报文中的所有数据包的传输和到达。服务访问点的寻址。在一台运行多道程序的计算机上,保证报文被传输到正确的程序。拆分和组装。将报文分解成课传输的片段,并且给这些片段编上序号。连接控制。决定是否通过一条单独路径来传输所有的包。3、什么是传输层的复用功能?它分为哪两种?分别用在什么情况下?为了提高传输效率,传输层采用复用功能。分为两种,一个是向上复用,一个是向下复用。向上复用是指多个传输层连接使用同一个

Leetcode算法系列| 9. 回文数

目录1.题目2.题解C#解法一:反转一半数字Java解法一:反转一半数字1.题目给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121-。因此它不是一个回文数。示例3:输入:x=10输出:false解释:从右向左读,为01。因此它不是一个回文数。提示:2^312.题解映入脑海的第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非

LeetCode75| 单调栈

目录739每日温度901股票价格跨度739每日温度求后面第一个比他大的元素的位置,单调栈需要递增求后面第一个比他小的元素的位置,单调栈需要递减本题栈头到栈底的顺序应该从小到大classSolution{public:vectordailyTemperatures(vector&temperatures){stackst;vectorres(temperatures.size());st.push(0);for(inti=1;itemperatures[st.top()]){res[st.top()]=i-st.top();st.pop();}st.push(i);}}returnres;}};

leetcode 动态规划(爬楼梯、零钱兑换、完全平方数)

70.爬楼梯(进阶版)卡码网:57.爬楼梯(opensnewwindow)假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬至多m(1注意:给定n是一个正整数。输入描述:输入共一行,包含两个正整数,分别表示n,m输出描述:输出一个整数,表示爬到楼顶的方法数。输入示例:32输出示例:3提示:当m=2,n=3时,n=3这表示一共有三个台阶,m=2代表你每次可以爬一个台阶或者两个台阶。此时你有三种方法可以爬到楼顶。1阶+1阶+1阶段1阶+2阶2阶+1阶思路之前讲这道题目的时候,因为还没有讲背包问题,所以就只是讲了一下爬楼梯最直接的动规方法(斐波那契)。这次终于讲到了背包问题,我选择带录友们再爬一

【map】【滑动窗口】【优先队列】LeetCode480滑动窗口中位数

作者推荐动态规划多源路径字典树LeetCode2977:转换字符串的最小成本本文涉及的基础知识点C++算法:滑动窗口总结map优先队列题目中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。例如:[2,3,4],中位数是3[2,3],中位数是(2+3)/2=2.5给你一个数组nums,有一个长度为k的窗口从最左端滑动到最右端。窗口中有k个数,每次窗口向右移动1位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。示例:给出nums=[1,3,-1,-3,5,3,6,7],以及k=3。窗口位置中位数[13-1]

Leetcode算法系列| 11. 盛最多水的容器

目录1.题目2.题解C#解法一:暴力C#解法二:双指针(左指针大于右指针,left++)C#解法三:双指针优化(左指针小于等于最小高度,left++)Java解法一:双指针Python3解法一:双指针1.题目给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝

Leetcode算法系列| 8. 字符串转换整数 (atoi)

目录1.题目2.题解C#解法一:及其臃肿的代码C#解法二:DFA(确定有穷自动机)1.题目请你来实现一个myAtoi(strings)函数,使其能将字符串转换成一个32位有符号整数(类似C/C++中的atoi函数)。函数myAtoi(strings)的算法如下:1.读入字符串并丢弃无用的前导空格2.检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。3.读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。4.将前面步骤读入的这些数字转换为整数(即,“123”->123,“0032”

【OJ】牛客链表刷题

题目1.链表分割1.1题目分析1.2代码2.链表的回文结构2.1题目分析2.2代码这里两道与链表有关的题目均来自牛客。1.链表分割1.1题目分析因为这里代码不能选择用c语言写,所以选择用c++,因为c++兼容c。题目要求分割链表,我们可以直接弄成两个带哨兵位的链表,这样插入时就不用判断链表里面有没有节点。head1=tail1=(ListNode*)malloc(sizeof(ListNode));head2=tail2=(ListNode*)malloc(sizeof(ListNode));一个链表放小于x的节点,直接用尾插就能实现,if(cur->valx){tail1->next=cur

LeetCode 0070. 爬楼梯:动态规划(递推)

【LetMeFly】70.爬楼梯:动态规划(递推)力扣题目链接:https://leetcode.cn/problems/climbing-stairs/假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶+2阶3.2阶+1阶 提示:1方法一:动态规划(递推)第iii阶楼梯可以由第i−1i-1i−1阶或i−2i-2i−2阶楼梯而来,因此只需要将相邻两阶的方案数加起来,就能得到