算法与数据结构
文章平均质量分 61
梦幻觉与暗月光
这个作者很懒,什么都没留下…
展开
-
动态规划——完全背包
完全背包基础问题有 N种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi, wi,用空格隔开,分别表示第 i 件物品的体积和价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22 43 44 5原创 2022-01-08 22:17:27 · 697 阅读 · 0 评论 -
史上最浪漫的题,程序员都哭了
浪漫相遇你变成我,走过我走过的路。我变成你,走过你走过的路。然后我们便相遇了…我宣布,这道题被评为今年最感动的题。原创 2021-07-22 18:10:45 · 1063 阅读 · 5 评论 -
删除链表的方法
删除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。方法一:直接在原链表操作这种方法要注意区分删除头节点和其他结点的情况移除头结点和移除其他节点的操作是不一样的,因为链表的其他节点都是通过前一个节点来移除当前节点,而头结点没有前一个节点。所以头结点如何移除呢,其实只要将头结点向后移动一位就可以,这样就从链表中移除了一个头结点。方法二:设置一个虚拟头结点这样原链表的所有节点就都可以按照统一的方原创 2021-07-20 18:05:26 · 2951 阅读 · 0 评论 -
leetcode——两道有意思的数组题
题一 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入:nums = [-1,-100,3,99], k = 2输出:[3,99,-1,-100]解释: 向右旋转 1 步: [99,-1,-100,3]向右旋转 2 步: [3,99,-1,-10原创 2021-07-07 23:06:07 · 218 阅读 · 0 评论 -
leetcode——数组中找重复或者唯一数问题
我们做跟数组有关的算法题时,常会遇到让你找数组中唯一的数,或者是重复的数,我们来总结一下最近刷leetcode遇到的这类题核心思路做这类题的思路比较简单,也比较灵活,在数据量不大的时候,我们通常可以开辟一个辅助空间,用数组的来记录出现次数(字符串数组的话可以转成ascii值),或者也可以用hashset,list等来记录和判断所求数组的出现次数进行操作。如果不想开辟辅助空间,就要用for循环来逐一判断每一位的次数,用时间复杂度换空间复杂度。下面我们先看道例题题一给定一个字符串,找到它的第一个不重复的原创 2021-07-05 00:49:37 · 397 阅读 · 0 评论 -
常见排序方法Collections.sort
Collections.sort方法在日常开发中,很多时候都需要对一些数据进行排序的操作。然而那些数据一般都是放在一个集合中如:Map ,Set ,List 等集合中。他们都提共了一个排序方法 sort(),在API中是这样定义的public static void sort(List list,Comparator<? super T> c)根据指定的比较器引起的顺序对指定的列表进行排序。 列表中的所有元素必须使用指定的比较器相互比较 (即, c.compare(e1, e2)不能为原创 2021-07-03 23:24:26 · 900 阅读 · 0 评论 -
二分查找——三种模板及常见的问题
二分查找二分查找很常见,java的API就有二分查找的方法。它的效率很高,为 log2n。二分思路也很清晰,但是还是那句经典的话: 思路越简单,细节越丰富。基本模板int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = left + (right - left) / 2; if (nums[mid] == target)原创 2021-06-15 16:36:11 · 251 阅读 · 0 评论 -
动态规划——01背包
01背包基础问题有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例原创 2021-06-10 15:38:03 · 92 阅读 · 0 评论 -
数据结构——java停车场管理系统
内容描述设有一个可停放 N 辆汽车的狭长停车场 , 只有一个大门供车辆出入 。车辆按到达先后顺序依次从最里面向大门口停放 。如果已放满 N 辆车 , 再来的车辆只能在大门外的便道上等待 一旦有车辆从停车场离开排在便道上的车辆可依次进入停车场 。停车场中某辆车离开时 ,在它之后进入停车场的车辆必须为它让路退出停车场 ,等该车辆离开后其后车辆依原次序进入停车场 ,每辆汽车在离开时 ,都要依据停留时间交费 ;停在便道上的车辆不收费 ,在便道上某辆汽车进入停车场或离去后 ,其余车辆仍然保持原来次序。输入汽原创 2021-05-15 21:02:19 · 2901 阅读 · 0 评论 -
蓝桥杯十一届省赛javaB组填空题
A 门牌制作【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个字符 0, 2 个字符 1, 1 个字符 7。请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?方法一用数学方法思考,一直做模10运算,看每一位上是否有2。public class Ma原创 2021-04-02 21:32:38 · 324 阅读 · 0 评论 -
算法与数据结构——链表
链表存储结构顺序存储:地址连续,用数组链式存储:地址不连续,用指针(引用,面向对象)链表链表中的每一个元素称为“结点”,单链表中每个结点都应包括两个部分:一个是需要用到的实际数据data;另一个就是存储下一个结点地址的指针,即数据域和指针域;而双向链表中,每个结点包括存储其上一个结点地址的指针,用到的数据data和存储下一个结点的指针。数据结构中的每一个数据结点对应于一个存储单元,这种储存单元称为储存结点,也可简称结点。————————————————data为实际存放的数据,next为存原创 2021-03-18 21:28:15 · 378 阅读 · 1 评论 -
dfs——n皇后问题
n皇后问题 * 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 * 你的任务是,对于给定的N,求出有多少种合法的放置方法。 * * Input * 共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。 * Output * 共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。 * * Sample Input * 1 * 8 * 5 *原创 2021-03-17 22:53:50 · 336 阅读 · 0 评论 -
贪心——硬币问题
贪心问题硬币问题 * 有1元,5元,10元,50元,100元,500元的硬币各有任意个,.现在要用这些硬币来支付b元,最少需要多少枚硬币? * * 限制条件 * 0≤ 硬币个数≤1000000000 * 0≤b≤1000000000 * * 输入描述: * 依次输入硬币的个数和b,以空格分隔 * * 输出描述: * 输出最少所需硬币数 * * 示例1 * 输入 * 3 2 1 3 0 2 620 * * 输出 * 6贪心算法是用一种用局部最优解来推到全局最优解的方原创 2021-03-15 19:54:43 · 307 阅读 · 3 评论