- 博客(101)
- 收藏
- 关注
原创 C/C++动态规划
比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和. 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列中所有和为T的“序列和”。求两个字符串最长公共子序列的长度。
2023-03-10 10:54:29
609
原创 C/C++深度优先
问在给的p*q的棋盘上,以象棋中马的行走方式,是否可以不重复的走完整个棋盘。若可以则输出任意一种行走方式,注意要按照字典序的方式输出。不可以就输出“impossible”。给出一堆长度各异的木棍,这些木棍能否头尾相连形成一个正方形?2)参数设计 DFS(当前节点的信息,终点状态)
2023-03-05 10:14:00
181
原创 C/C++更多map的使用
据说魔法世界有100000种不同的魔咒,波特很难全部记住,但为了对抗强敌,他必须在危机时刻能调用任意一个魔咒,所以他需要你的帮助。其中”魔咒“和”对应功能“分别长度不超过20和80的字符,字符串种保证不包含字符”[“和“]”,且"]"和后面的字符串之间有且仅有一个空格,词典最后一行以”@END@"结束,这一行不属于词典中的词条。每个测试用例的输出占一行,输出魔咒对应的功能,或者功能对应的魔咒,如果魔咒不在字典中,那么输出"what?输入的第一行为N,是学生的个数(N
2023-03-03 16:47:21
287
原创 C/C++二叉树
读取字符,非#:根据字符,创建一个TreeNode 对象,把创建的TreeNode对象的左右孩子入队,判断root是否为空,直接让root指向新的TreeNode对象即可,访问队列,得到本次插入的位置,插入读取字符。初始时,TreeNode* root 为NULL,创建一个队列,这个队列用来保存将要插入的位置。读取字符,是#:访问队列,找到本次插入的位置,置为空指针,出队。
2023-02-26 10:45:47
114
原创 C/C++指针和引用
如果函数调用完成,会修改参数的内容,使用引用传递。避免方法:delete array[i];int*基类型是int的指针变量。将值传递改为引用传递。
2023-02-26 09:42:11
84
原创 C/C++分治
n组成了一棵完全二叉树,我们已知这个二叉树的最后一个结点是n。:这里有一串数列被递归定义,f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2) n>=2。输入数据包括多行,每行给出一组面试数据,包括两个整数m、n(1
2023-02-24 09:29:13
148
原创 4、HttpServletResponse对象
客户端发出第一个请求,被服务器接收处理后,服务器会进行响应,在响应的同时,服务器会给客户端一个新的地址(下次请求的地址response.sendRedirect(url))😉,当客户端接收到响应后,会立刻、马上、自动根据服务器给的新地址发起第二个请求,服务器接收请求并作出响应,重定向完成。服务于服务器对客户端的请求进行响应,将web服务器处理后的结果返回给客户端。对于getOutputStream()方式获取到的字节流,响应中文时,由于本身就是传输的字节,所以此时可能出现乱码,也可能正确显示。
2023-02-20 16:55:23
483
原创 68-I二叉搜索树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。判断p,q与root的值的判断,不断缩小搜索范围。
2023-02-17 10:38:45
88
原创 64.求1+2+...+n
n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?在“出口”时,采用与或门。
2023-02-17 10:27:59
93
原创 63.股票的最大利润
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?方法二:只遍历一遍,在“最低点”买入,“最高点”卖出。
2023-02-17 10:21:21
77
原创 61.扑克牌中的顺子
从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。
2023-02-17 10:12:17
135
原创 62.圆圈中最后剩下的数字
0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。思路:每次删除了某个数后,就对这些数重新进行编号。f(n,m):表示数的总数为n时,剩下的数是多少。难点:找出f(n,m)与f(n-1,m)的关系。方法一:采用循环链表,对其进行遍历删除。
2023-02-17 09:54:53
108
原创 60.n个骰子的点数
你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。有n个骰子,就有6^n种组合,s=[n,6n],求k / 6^n。
2023-02-17 09:42:42
96
原创 59-I滑动窗口的最大值
遍历数组时,把可能成为最大值的元素的下标存入到队列中,如果队尾元素比新加入的元素的值小,就把队尾元素剔除。给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。采用队列和数组的结合,队列存放那些可能成为最大值的元素的下标。
2023-02-17 09:27:01
74
原创 58-II左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。对前k个进行逆置,对后n-k个进行逆置,对整个字符串进行逆置。
2023-02-16 10:54:22
71
原创 58-I翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
2023-02-16 10:44:33
89
原创 57-II和为s的连续正整数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
2023-02-16 10:37:52
90
原创 57-I和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。比如可以先固定一个值,算出它和target的一个差值,然后再在另一部分进行二分查找这个差值。定义两个指针i,j,i指向左边,j指向右边。方法一:采用二分查找。
2023-02-16 10:25:44
87
原创 56-II数组中数字出现的次数
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。因此,统计所有数字的各二进制位中 11 的出现次数,并对 33 求余,结果则为只出现一次的数字。考虑数字的二进制形式,对于出现三次的数字,各 二进制位 出现的次数都是 33 的倍数。
2023-02-16 10:08:27
95
原创 56-I数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
2023-02-16 09:59:55
83
原创 55-II平衡二叉树
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。递归判断非叶节点左右子树的高度之差,若相差不超过1,那么它就是一棵平衡二叉树;因为上面的题解中在计算深度和判断平衡的时候重复计算了树的高度;
2023-02-16 09:30:28
118
原创 55-I二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
2023-02-16 09:16:23
69
原创 54.二叉搜索树的第k大节点
若求第k小节点,可直接采用中序遍历,因为中序遍历得到的是一个有序的序列:左 根 右 从小到大排序的。而这道题所求是第k大节点,可以稍微改造一下,将其遍历顺序改为 右 根 左 就变成从大到小的顺序了。给定一棵二叉搜索树,请找出其中第 k 大的节点的值。
2023-02-16 09:13:03
81
原创 53-II 0~n-1种缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。遍历数组,若数组元素和下标i不一致,i即为所求。二分查找,判断的依据是下标和值是否是相等的。
2023-02-16 09:00:12
96
原创 52.两个链表的第一个公共节点
遍历两个链表,先求出两个链表的长度len1和len2,让长的链表先移到|len1-len2|个节点;再让两个链表同时移到,寻找第一个公共节点。输入两个链表,找出它们的第一个公共节点。
2023-02-15 13:42:45
77
原创 51.数组种的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。在冒泡排序种一个交换了多少次就有多少对逆序对。时间复杂度O(N^2)
2023-02-15 13:26:07
75
原创 47.礼物的最大价值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?空间优化:将二维dp数组转为一维dp数组。采用动态规划,二维dp。
2023-02-15 12:22:31
94
原创 46.把数字翻译成字符串
给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。首先把数字转换成数组。
2023-02-15 12:06:12
144
原创 45把数组排成最小的数
nums是一个肺腑整数数组,把数组里所有数字拼接起来排成一个数,打印能拼出的所有数中最小的一个。对数组进行排序,只是比较两个数的“大小”有所不同,所求为最小,则按递增顺序排序。若xy>yx,则x大于y。
2023-02-15 11:52:24
83
原创 44.数字序列中某一位的数字
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。先求出它是处于哪一个范围之内的;之后,再定位它具体是哪一个数字;再定位它是哪一个数字中的哪一位。num=bit+(n-1)/i【n是处理之后的数】请写一个函数,求任意第n位对应的数字。
2023-02-15 11:20:12
170
原创 43.1~n整数中1出现的次数
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。前3位为高位上的数,低2位为低位数。
2023-02-14 11:25:51
81
原创 42.连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。优化空间复杂度为O(1)时间复杂度:O(N)空间复杂度:O(N)
2023-02-14 11:12:32
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅