
编程题目训练
记录一些面试题目,以及练习题目
tran_sient
曾经我是一只小白,现在是一只大白。
展开
-
【dp】1132: Coin-collecting by robot
题目:http://acm.swust.edu.cn/#/problem/1132/490题目描述Several coins are placed in cells of an n×m board. A robot, located in the upper left cell of the board, needs to collect as many of the coins as possible and bring them to the bottom right cell. On each原创 2020-05-29 20:33:40 · 1005 阅读 · 0 评论 -
【dp - 01背包】32: 简单背包问题
题目:http://acm.swust.edu.cn/#/problem/32/490题目描述设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,…wn。问能否从这n件物品中选择若干件放入背包中,使得放入的重量之和正好为S。如果有满足条件的选择,则此背包有解,否则此背包问题无解。输入输入数据有多行,包括放入的物品重量为s,物品的件数n,以及每件物品的重量(输入数据均为正整数)多组测试数据。输出对于每个测试实例,若满足条件则输出“YES”,若不满足则输出“NO”原创 2020-05-20 10:50:55 · 1438 阅读 · 0 评论 -
【dp - 01背包求方案】195: Buyer
题目:http://acm.swust.edu.cn/#/problem/195/490题目描述哆啦A梦班级举办个party,当然吃的东西必不可少,哆啦A梦负责采购任务,他得到了一份清单,上面注明不同食品的受欢迎程度,哆啦A梦需要用一定的价钱尽可能达到的更大的受欢迎程度!例如,瓜子的受欢迎程度为20,瓜子的价钱是50元,那么如果哆啦A梦选择买瓜子,将花费50元,但受欢迎程度增加了20。为了避免食品单调性,每种食品只能买一份,不能重复购买。 现在哆啦A梦需要知道如何采购才能达到最大的受欢迎程度,你能帮助原创 2020-05-20 17:10:55 · 1665 阅读 · 0 评论 -
【KMP】572: Boyer–Moore–Horspool algorithm
题目:swust oj 572:http://acm.swust.edu.cn/#/problem/572/490题目描述题目内容来自:https://en.wikipedia.org/w/index.php?title=Boyer%E2%80%93Moore_string-search_algorithm&oldid=280422137The Boyer–Moore string search algorithm is a particularly efficient string sea原创 2020-05-24 10:42:22 · 3499 阅读 · 0 评论 -
【dp - 多重背包】575: Coin Changing
题目:http://acm.swust.edu.cn/#/problem/575/490题目描述设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n]中。 对于给定的1≤n≤10,硬币面值数组T和可以使用的各种面值的硬币个数数组Coins,以及钱数m,0≤m≤20001,编程计算找钱m的最少硬币数。输入第一行中只有1 个整数给出n的值,第2 行起每行2 个数,分别是T[j]和Coins[j]。最后1 行是要原创 2020-05-26 20:07:19 · 1005 阅读 · 0 评论 -
【力扣】- 在排序数组中查找元素的第一个和最后一个位置
leetcode第34题题解原创 2023-01-09 14:31:30 · 450 阅读 · 1 评论 -
【力扣】- 有效完全平方数
题目:367. 有效的完全平方数给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false提示:1 <= num <= 2^31 - 1题目链接说明:即找有没有一个数的平方等于当前这个数,暴力循环去找则超时,选择二分去找。左端点为1,右端点为num。代码:cla原创 2021-11-04 10:54:07 · 149 阅读 · 0 评论 -
【力扣】- 接雨水
题目:题目链接说明:题解代码:class Solution { public int trap(int[] height) { int left = 0; int right = height.length - 1; int leftMax = 0,rightMax = 0; int ans = 0; while (left < right) { leftMax = Math.原创 2021-11-03 19:43:56 · 357 阅读 · 0 评论 -
【力扣】- 加一
题目:66. 加一给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示:1 &原创 2021-10-22 10:39:48 · 237 阅读 · 0 评论 -
【力扣】- 无重复字符的最长子串
题目:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一原创 2021-09-14 10:01:21 · 195 阅读 · 0 评论 -
【力扣】- 二进制中1的个数
题目:剑指 Offer 15. 二进制中1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用 二进制补码 记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -原创 2021-08-26 13:36:31 · 184 阅读 · 0 评论 -
【力扣】- 两数相加
题目:题目链接解法:从左到右依次去节点相加就好了,遇到进位将进位置1。我这里将短链表的值直接加到长链表上,需要注意的是,若存在最后一次加法还使得进位为1,那么需要新建一个节点连在尾部,值为1。代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val原创 2021-05-24 11:31:11 · 162 阅读 · 4 评论 -
【力扣】- 二叉树层平均值(层序遍历)
题目:题目链接做法:广度优先搜索进行层序遍历,问题点在于每次只求解当前这一层的节点的平均值。由于队列的特性为先进先出,加一个循环,循环当前队列的大小次并将这些元素出列:例如根节点循环一次即这一层的所有节点,循环一次,将它出列,将它的子节点入列。遍历每一层,求出平均值即可。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; *原创 2021-03-30 21:13:51 · 258 阅读 · 0 评论 -
【力扣】- 重建二叉树
题目:题目链接解法:对于先序序列,第一个节点为根节点。对应中序序列中该节点的位置,则左边为左子树,右边为右子树。对于左子树和右子树重复上面的过程,即一个递归的过程。这里先将中序序列中每个节点对应的下标存在HashMap中方便查找。图解:以第一个节点为例,我们代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * T原创 2021-03-17 18:26:33 · 350 阅读 · 3 评论 -
【力扣】- 最长回文串
题目:5. 最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成解法:这里采用中心扩展法,考虑边界条件,最短的回文子串可以由1到2原创 2021-03-12 17:16:39 · 160 阅读 · 0 评论 -
【字节跳动2018校招Android方向(第四批)】- 编程题2
题目:输入例子1:8 1aabaabaa输出例子1:5例子说明1:把第一个 ‘b’ 或者第二个 ‘b’ 置成 ‘a’,可得到长度为 5 的全 ‘a’ 子串。解法:分别求仅替换a或者b能得到的最长的区间,再求最大值。例如,对于替换a,我们遇到b时,进行一次替换,并且记录当前b的位置(这里我们记录所有b的位置),当替换次数小于等于m时,更新区间长度,当替换次数大于m时,取出一个b的位置(即上一个b的位置,我们这里用t记录),区间左端点移到这个位置,再去更新最值即可。代码:import j原创 2021-03-06 16:01:30 · 204 阅读 · 1 评论 -
【力扣】- 剑指 Offer 04. 二维数组中的查找
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。给原创 2021-03-05 15:23:33 · 122 阅读 · 0 评论 -
【力扣】- 四数之和
题目:18. 四数之和给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:nums = [], target =原创 2021-03-04 22:04:14 · 204 阅读 · 1 评论 -
【字节跳动2018校招Android方向(第二批)】- 用户喜好
题目:输入例子1:51 2 3 3 531 2 12 4 53 5 3输出例子1:102例子说明1:样例解释:有5个用户,喜好值为分别为1、2、3、3、5,第一组询问对于标号[1,2]的用户喜好值为1的用户的个数是1第二组询问对于标号[2,4]的用户喜好值为5的用户的个数是0第三组询问对于标号[3,5]的用户喜好值为3的用户的个数是2解法:首先,我尝试了每次询问都去记录一下区间中k的个数,很明显会超时。正确做法应该是,记录下来每个喜好值对应的下标有哪些。然后根据k值获原创 2021-03-04 16:42:30 · 183 阅读 · 1 评论 -
【网易2020校招笔试- Android 开发工程师(正式批)】- 跳柱子
题目:输入例子1:15 36 2 4 3 8输出例子1:YES输入例子2:15 21 8 2 3 4输出例子2:NO说明:贪心思想,每次选择小于当前高度的最大高度作为下一步,若没有小于当前高度的且还未使用超能力,则使用一次超能力,选择最大高度作为下一步。代码:#include<bits/stdc++.h>#define int long longusing namespace std;const int maxn=1e5+5;signed main(){原创 2021-02-19 16:03:25 · 141 阅读 · 1 评论 -
【网易2020校招笔试- Android 开发工程师(正式批)】- 圆环切割
题目:输入例子1:161 2 3 4 5 6输出例子1:NO输入例子2:144 4 5 3输出例子2:YES说明:若答案序列是由前面部分数字加上后面部分数字构成,那么等价于中间存在一段连续序列。若答案序列是前面的某一段,那么等价于后面的某一段。即s1=s2,也就是说,我们只需要考虑前面或者中间是否存在一段连续序列使得和恰好为总序列和的二分之一即可。代码:#include<bits/stdc++.h>#define int long longusing na原创 2021-02-17 19:24:42 · 167 阅读 · 0 评论 -
【网易2020校招笔试- Android 开发工程师】- 积木
题目:输入例子1:15 32 2 3 3 1输出例子1:YES输入例子2:15 20 0 1 2 1输出例子2:NO说明:起初,我理解错了题意,以为只能一次拿一个,放一个。后来发现,题意相当是,你从第一堆积木开始,每次可以执行三种操作,即走,拿,放。而若选择走,则不能返回上一堆进行拿放操作,若选择拿放可以一直拿放直到想走了为止。做法:那么,保持序列是一个严格递增的序列,即最优的序列一定是0,1,2,3,4,5,6,…这样的。只要最后能满足此序列,就代表可以完成任务。即第一堆原创 2021-02-17 16:26:05 · 449 阅读 · 0 评论 -
【2021届阅文Android方向笔试卷】- 最长有效括号
题目:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。输入例子1:“(()”输出例子1:2输入例子2:“(()()”输出例子2:4说明:利用栈进行求解,start变量保存一个起始下标,每次当栈为空时置为‘)’下一个字符的下标。每遇到一个左括号,将该字符下标入栈。遇到右括号时,若栈为空,更新start。若栈不为空,出栈,并更新maxLen的值。代码:class Solution {public: /** * 代码中的类名、方法名、原创 2021-02-15 10:33:58 · 131 阅读 · 0 评论 -
【2021届阅文Android方向笔试卷】- 最长回文子串
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。输入例子1:“cbbd”输出例子1:“bb”说明:两层循环枚举所有字串,若字串首尾相等,则判断是否为回文串,并且每次保存一个串,当遇到比它长的串再赋值给他,返回这个串即可。代码:class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param s string字符串原创 2021-02-09 21:19:22 · 1127 阅读 · 5 评论 -
【2021届阅文Android方向笔试卷】- 爬楼梯
题目:25/25[编程题]爬楼梯时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?输入例子1:2输出例子1:2说明:对于n阶的楼梯,我们考虑他的最后一步,一定是由第n-2阶走两步,和第n-1阶走一步。也就是说,对于当前的第i阶,走到它的方法数是走到i-1和走到i-2的和,递推关系即:dp[i]=dp[i-1]+dp[i-2]代码原创 2021-02-02 21:41:01 · 252 阅读 · 2 评论 -
【小红书2020校招Android方向笔试题卷三】- 笔记草稿
题目:[编程题]笔记草稿时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M薯队长写了一篇笔记草稿,请你帮忙输出最后内容。1.输入字符包括,"(" , “)” 和 "<“和其他字符。2.其他字符表示笔记内容。3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。4.”<“表示退格, 删去前面一个笔记内容字符。括号不受”<"影响 。输入描述:输入一行字符串。长度<=10000.输原创 2021-01-24 20:27:20 · 440 阅读 · 0 评论 -
【 网易2021校招笔试-移动端开发工程师(正式第二批)】- 最长和谐连续子序列
题目:[编程题]最长和谐连续子序列时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M和谐连续序列是指一个连续序列中元素的最大值和最小值之间的差值正好是1。现在,给定一个整数数组,你需要在所有可能的连续子序列中找到最长的和谐连续子序列的长度。输入描述:一行整数数组,由空格分割输出描述:一行一个数字表示答案,即最长和谐连续子序列的长度输入例子1:1 3 2 2 5 2 3 7输出例子1:3例子说明1:最长的连续和谐子序列是:[3,2,2]输入原创 2021-01-13 14:53:27 · 1931 阅读 · 3 评论 -
【网易2021校招笔试-移动端开发工程师(正式第二批)】- 电影院选座
题目:疫情逐步缓和后,电影院终于开业了,但是由于当前仍处于疫情期间,应尽量保持人群不聚集的原则。所以当小易来电影院选定一排后,尽量需要选择一个远离人群的位置。已知由0和1组成的数组表示当前排的座位情况,其中1表示已被选座,0表示空座请问小易所选座位和最近人的距离座位数最大是多少?有如下假设:至少有一个人已选座,至少有一个空座位,且座位数限制为输入描述:一行由0和1组成的整数数组输出描述:仅一行一个整数表示答案输入例子1:1 0 0 0 1 0 1输出例子1:2例子说明1:小易第原创 2021-01-10 15:01:21 · 1622 阅读 · 0 评论 -
【蓝桥杯】- 数字游戏
题目描述:解题过程:最初以为是一个循环节问题,样例确实是循环的,多写几组就发现了。但是,其实是一个坑,根本不是什么循环节。于是我直接暴力做了一遍,过了一半样例:#include<bits/stdc++.h>using namespace std;const int maxn=1e6+7;typedef long long ll;int main(){ ll n,k,t; ll a[maxn],pos=0,num=1,sum=0; a[pos++]=num; cin>原创 2020-10-06 13:23:59 · 841 阅读 · 2 评论 -
【三维坐标bfs】小白月赛21-Jelly
引言:以前只见过2维坐标系下的广搜,今天算是开眼了,居然有3维的题目。题目:Jelly链接:https://ac.nowcoder.com/acm/contest/3947/J来源:牛客网题目描述Nancy喜欢吃果冻!Nancy钻进了一个n \times n \times nn×n×n的果冻里,她想从(1,1,1)一路上、下、左、右、前、后六个方向吃到(n,n,n)。但果冻毕竟是...原创 2020-02-21 17:37:33 · 782 阅读 · 0 评论 -
【dp】小白月赛21-I love you
引言:为什么我要看了别人的代码才会题,呜呜呜。好了,这道题我觉得很有必要记录一下,我觉得这些大佬的想法太厉害了,所以我就把它借鉴过来了。题目:I love you链接:https://ac.nowcoder.com/acm/contest/3947/I来源:牛客网题目描述此时相望不相闻,愿逐月华流照君。一纸情书,到底蕴含了多少倍的爱情呢?I love you, not only ...原创 2020-02-20 15:52:43 · 759 阅读 · 0 评论 -
【找规律】小白月赛21-Fool Problem
引言:正如题目一样,的确是道fool problem,我却被fool到了,那就发一下整个思考过程,水一篇文章吧,让大家看看我是怎么被fool到的。题目:fool problem思考:我先开始以为他的规律是循环的,我准备去找循环节,后来我发现你真的去输出一下就发现好fool。而且数据10的2020次方,哪里能存这么大的整形变量。代码:直接给代码吧,至于规律嘛,你把我的main函数里面...原创 2020-02-20 11:52:59 · 423 阅读 · 0 评论 -
【二维前缀和】小白月赛-秘法地震
引言:矩阵前缀和矩阵前缀和,即一个矩阵的一片区域的和,如图:基本公式就是:pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+a[i][j];题目:秘法地震链接:https://ac.nowcoder.com/acm/contest/2272/C来源:牛客网题目描述帕秋莉掌握了一种土属性魔法这种魔法可以在一片k×k大小的一个正方形区...原创 2020-02-17 11:18:25 · 1565 阅读 · 2 评论 -
【dp】小白月赛-迷雾森林
引言:好久没有做题了,今天做了发现自己打题这方面确实差别人太多了,慢慢的从基础开始吧。本来我以为这是一道dfs,虽然看复杂度不像,但是我没有想到其他的解法,百度了才发现这是一道dp,那就记录一下吧。题目:迷雾森林链接:https://ac.nowcoder.com/acm/contest/2272/B来源:牛客网题目描述赛时提示:保证出发点和终点都是空地帕秋莉掌握了一种木属性魔法这...原创 2020-02-16 12:15:16 · 650 阅读 · 0 评论 -
PAT (Advanced Level) Practice 1030 Travel Plan 最短路径满足最小花费
题目:PAT 1030 Travel PlanA traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to d...原创 2019-07-26 09:23:41 · 222 阅读 · 0 评论 -
牛客 - 北京信息科技大学校赛 E题
题目:链接:https://ac.nowcoder.com/acm/contest/940/E来源:牛客网题目描述kotori拿到了一些正整数。她决定从每个正整数取出一个素因子。但是,kotori有强迫症,她不允许两个不同的正整数取出相同的素因子。她想知道,最终所有取出的数的和的最小值是多少?注:若a%k==0,则称k是a的因子。若一个数有且仅有两个因子,则称其是素数。显然1只有一个因...原创 2019-07-27 00:09:35 · 349 阅读 · 0 评论 -
poj 3190 【Jack的日常做题记录】
贪心算法(外加简单优先队列的使用)问题链接:poj3190题目概述:有 n头牛(1<=n<=50,000)要挤奶。给定每头牛挤奶的时间区间[A,B] (1<=A<=B<=1,000,000,A,B为整数)。牛需要呆畜栏里才能挤奶。一个畜栏同一时间只能容纳一头牛。问至少需要多少个畜栏,才能完成全部挤奶工作,以及每头牛都放哪个畜栏里(Special judg...原创 2019-07-01 16:12:57 · 242 阅读 · 0 评论 -
前缀和之子矩阵最大值
前缀和求矩阵子矩阵元素最大和emmm很早之前我看这道题是直接放弃的,最近看了一下前缀和,对这道题重新进行了理解。然后大概看了看别人的博客,结合自己的的理解,大概会做了。题目链接:SWUST OJ 130大概思路:对于这样一个矩阵,最大的矩形前缀和就等于蓝的矩阵加上绿的矩阵,再减去重叠面积,最后加上小方块,即sum[i][j] = sum[i][j - 1] + sum[i - 1][...原创 2019-07-02 20:12:00 · 407 阅读 · 0 评论 -
【前缀和与差分】- PAT题目
前缀和与差分1.前缀和:前缀和是一种预处理,即给出n个数和m组访问,如果直接每次都在这些数列上操作,会造成超时,前缀和直接对这些访问进行预处理,最后直接得出取出结果进行计算。即O(n+m)。相关题目:1046 Shortest DistanceAC代码:#include#include#include#include#include#include#define N 1000...原创 2019-06-30 16:07:29 · 692 阅读 · 2 评论