应该是我做过最复杂的数位dp了 做之前已经忘了数位dp是啥了,找了一个博客复习下 然后这题不同的是求的是和,而不是个数 所以需要维护更多的元素 dp[i][j]val, count, remain 代表讨论到i位置,已经有mask(j) (0-9分别2进制表示)时他的剩下位数的总值,计数,以及前面全
这是悦乐书的第192次更新,第196篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第52题(顺位题号是217)。给定一个整数数组,查找数组是否包含任何重复项。如果数组中至少出现两次值,则函数应返回true,如果每个元素都不相同,则返回false。例如: 输入:[1,2,
Leetcode上的一道题。在rotated array中找到最小值。一个rotated array就是一个已排序好的数组绕着某个位置旋转180度,像[1,2,3,4,5,6],绕着5旋转后就是[5,6,1,2,3,4]。 用二分法找最小值,因为这个数组可以看成两个已排序的数组的组成的,而且旋转到后
用C++语言实现选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致
因为最近一段时间接触了一些Leetcode上的题目,发现许多题目的解题思路相似,从中其实可以了解某类算法的一些应用场景。 这个随笔系列就是我尝试的分析总结,希望也能给大家一些启发。 动态规划的基本概念 一言以蔽之,动态规划就是将大问题分成小问题,以迭代的方式求解。 可以使用动态规划求解的问题一般
1.二分搜索树特点:每个节点的键值大于左孩子; 每个节点的键值小于右孩子;以左右孩子为根的子树仍为二分搜索树 ;不是完全二叉树2.优势:高效,不仅可以查找数据;还可以高效的插入,删除数据-动态维护数据3.二分搜索树的局限性:  1.二分搜索树的排列不同,对应的时间复杂度不同:最差可以退化为链表的形式
写在之前 在程序设计里,我们经常需要将同为某个类型的一组数据元素作为一个整体来使用,需要创建这种元素组,用变量来记录它们或者传入函数等等等等,「线性表」就是这样一组元素的抽象,它是某类元素的集合并且记录着元素之间一种顺序关系,是最基本的数据结构之一,在实际程序中运用非常广泛,比如 Python 中的
堆的介绍 Q: 什么是堆? A: 这里的“堆”是指一种特殊的二叉树,不要和Java、C/C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分 A: 堆是有如下特点的二叉树: 1) 是一棵完全二叉树 2) 通常由数组实现。前面介绍了如何用数
比赛的时候看到题意没多想就放弃了。结果最后D也没做出来,还掉分了,所以还是题目做的太少,人太菜。 回到正题: 题意:一棵树,点带权值,然后求k个子连通块,使得k个连通块内所有的点权值相加作为分子除以k的值最大,如果这样的最大值有多个,就最大化k。 赛后看了看别人的代码仔
目录 Question Solution解法1 解法2 Question 三个人掷骰子,前两个人的得分分别是Y和W,问第三个人胜利的概率(第三个人得分不小于Y、W)?结果输出格式为(A/B),如果概率为0则输出(0/1),如果概率为1则输出(1/1) Solution 解法1 通过公式(p= fr
写在之前  我们都知道,对于同一个问题来说,可以有多种解决问题的算法。尽管算法不是唯一的,但是对于问题本身来说相对好的算法还是存在的,这里可能有人会问区分好坏的标准是什么?这个要从「时效」和「存储」两方面来看。   人总是贪婪的,在做一件事的时候,我们总是期望着可以付出最少的时间、精力或者金钱来获得
PAT 1088 三人行 https://pintia.cn/problem-sets/994805260223102976/problems/1038429286185074688 题目:     子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”     本题给定甲、乙、丙三个人的能
问题 B: 分蛋糕 时间限制: 1 Sec  内存限制: 128 MB提交: 2430  解决: 966[提交][状态][讨论版] 题目描述        今天是DK生日,由于DK的朋友很多,所以DK在蛋糕店定制了一个矩形的特大号蛋糕。但问题是DK想将蛋糕均匀地分成正方形小块给每位朋友,并且使
问题 E: 神奇的序列 时间限制: 1 Sec  内存限制: 128 MB提交: 635  解决: 84[提交][状态][讨论版] 题目描述        Aurora在南宁发现了一个神奇的序列,即对于该序列的任意相邻两数之和都不是三的倍数。现在给你一个长度为n的整数序列,让你判断是否能够通过重新
这是悦乐书的第191次更新,第194篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第50题(顺位题号是205)。给定两个字符串s和t,确定它们是否是同构的。如果s中的字符可以替换为t,则两个字符串是同构的。 所有出现的字符必须替换为另一个字符,同时保留字符的顺序。 没有
题目原址 http://codeforces.com/contest/1082/problem/A 题目内容 一共n页书,现在位于第x位,想要看第y页,每次只能翻d页,注意总能翻到第1页和第n页。 Vasya想知道自己能否在经过无数次翻书后 看到第y页的内容。 如果可以,请给出最少需要翻几次书。 题

推荐文章