
刷题
VvUPUP
这个作者很懒,什么都没留下…
展开
-
带分数(全排列)
题目描述:100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。输入格式:从标准输入读入一个正整数N输出格式:程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。注意:不要求输出每个表示,只统计有多少表示法!分析:组成带分数的部分包括一个整数,一个分母,一个分子.原创 2020-08-01 12:39:09 · 692 阅读 · 0 评论 -
种树(递归)
题目描述:A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门 得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤 肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大。如果无法将m棵树苗全部种上,给出无解信息。输入原创 2020-07-30 12:02:10 · 457 阅读 · 0 评论 -
特殊的质数肋骨(dfs)
方法一:枚举import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int min = (int) (1*Math.pow(10,n-1)); int max = min *10 - 1;..原创 2020-07-28 11:33:57 · 380 阅读 · 0 评论 -
leetcode:交错字符串
https://leetcode-cn.com/problems/interleaving-string/DFS:可能大家想的第一种方法就是挨个挨个的去比较,设置三个指针,i,j,k,如果s1的第一个元素和s3的第一个元素相等,则i和k都要后移一位,就这样比较下去,直到 所有指针都到达最后,就说明是交错字符串。但是有个很坑的地方,如果s1和s2指针所指的元素都和s3的目标元素相同,那么这时候面临两种选择,但是这样就会得出错误的答案。样例1的那个就会出错。但是,我们还是想要用那种办法,我就可以原创 2020-07-18 13:07:55 · 228 阅读 · 0 评论 -
leetcode:判断二分图(图的遍历)
https://leetcode-cn.com/problems/is-graph-bipartite/思路:根据分析可知,任意两个相邻的节点,一定是一个属于集合A,一个属于集合B。可以用一个标记的方式来判断,从任意一个点开始,先把他标记为红色,然后遍历整个图将与他直接相连的点标记为绿色,再继续遍历绿色的点,把他们直接相邻的点标为红色。如果在遍历的过程中,比如一个已经标为红色的点,他的相邻的点也为红色,那么这个就不符合二分图,直接返回false。直到所有点都被标记,那么就返回true。图的遍历有原创 2020-07-16 14:07:19 · 294 阅读 · 0 评论 -
leetcode:不同的二叉搜索树(动态规划)
https://leetcode-cn.com/problems/unique-binary-search-trees/思路:我们可以计算以每个节点作为根节点的搜索树的数量然后求和。令f(i)表示以i为根的二叉搜索树的个数即有:Sum = f(1) + f(2) + f(3) + f(4) + ... + f(n);但是我们知道了根节点后,下面的怎么求呢?因为这是一颗搜索二叉树,左子树上的节点小于根节点,右子树上的节点大于根节点。假设根节点是i,那么它的左子树就有i-1个节点,右子树有n-i原创 2020-07-15 12:19:10 · 271 阅读 · 0 评论 -
leetcode:有序矩阵中第K小的元素(二分查找)
https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/暴力法:直接将矩阵中的数,全部存到一个数组中,然后排序。(竟然没超时)class Solution { public int kthSmallest(int[][] matrix, int k) { int n = matrix.length; int[] a = new int[n*n];原创 2020-07-14 13:47:40 · 452 阅读 · 0 评论 -
leetcode:最长重复子数组(动态规划)
https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/暴力法:class Solution { public int findLength(int[] A, int[] B) { int ans = 0; for (int i = 0; i < A.length; i++) { for (int j = 0; j < B.length;原创 2020-07-13 13:39:01 · 513 阅读 · 0 评论 -
leetcode:两个数组的交集 II(排序+双指针,哈希表)
https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/方法一:对于交集的问题排序是很好解决的,然后再利用两个指针遍历两个数组。初始时,两个指针分别指向两个数组的头部。每次比较两个指针指向的两个数组中的数字,如果两个数字不相等,则将指向较小数字的指针右移一位,如果两个数字相等,将该数字添加到答案,并将两个指针都右移一位。当至少有一个指针超出数组范围时,遍历结束。class Solution { publi.原创 2020-07-13 10:40:27 · 215 阅读 · 0 评论 -
Leetcode:地下城游戏(动态规划)
https://leetcode-cn.com/problems/dungeon-game/思路:要保证骑士的血量最后最少,所以到达P的时候,血量为1,所以我们逆向考虑。因为每次只能向右或者向下走,很容易想到动态规划。设置一个数组dp[i][j]表示从(i,j)开始到终点需要的最少血量。对于dp[i][j],我们只要关心dp[i][j+1]和dp[i+1][j] 的最小值 。状态转移方程:dp[i][j] = min( dp[i+1][j], dp[i][j+1]) - ...原创 2020-07-12 12:28:48 · 361 阅读 · 0 评论 -
Leetcode:接雨水(动态规划、单调栈)
https://leetcode-cn.com/problems/trapping-rain-water/1.暴力法从左向右遍历,依次找到每个点左边最高的墙和右边最高的墙,然后比较出最小的墙,再减去当前点的高度就可以得出水在这个点的积水量。class Solution { public int trap(int[] height) { int ans = 0; for (int i = 1; i < height.length - 1; .原创 2020-07-11 14:53:26 · 292 阅读 · 0 评论