算法题
文章平均质量分 97
只要刷得够多,寂寞就追不上我
anlian523
人若无名,专心练剑!
展开
-
【LeetCode.53】 最大子序和——以及变种 返回开始结束索引
不用新建一个dp数组了,直接在nums数组上覆盖就好,因为无后效性,当前元素遍历后,就可以覆盖为dp[i]的值。dp[0]的值,初始时,就是确定的,因为只有一个元素的数组,它的唯一的子序列就是它自己。从递推公式dp[i+1] = max(nums[i+1], dp[i]+nums[i+1])可以看出,其实关键在于上一次递推结果是否大于0,如果大于0,那么当前递推结果就得加上 上一次递推结果。maxNum在遍历过程,保存最大的那个递归结果。原创 2020-04-09 22:58:28 · 1963 阅读 · 0 评论 -
【LeetCode.167】 两数之和 II - 输入有序数组
双端指针如果是用来遍历单个元素时,肯定没有问题的,最终每个元素都能遍历到。但此题实际是,要求我们去遍历元素的组合,即两个元素的组合,那么双端指针在遍历过程中,肯定不能遍历到所有组合情况,或者说,在遍历过程中,它会选择方向,适当排除掉某些情况。原创 2020-04-04 13:07:49 · 305 阅读 · 0 评论 -
【LeetCode.27】 移除元素
我们将算法结束后关心的前n个元素,称为压实数组。因为整个过程看起来就是在往左压实。compactIndex代表即将加入压实数组的那个元素应该赋值的索引。所以初始时,compactIndex为0,因为初始时一个非val元素都没有得到确认。cursor即为遍历指针。当遍历元素非val时,将其赋值给compactIndex位置,并compactIndex增加1.由于compactIndex刚好与压实数组的长度一样,所以函数返回compactIndex。原创 2020-04-02 23:59:04 · 220 阅读 · 0 评论 -
【LeetCode.26】 删除排序数组中的重复项
遍历数组,如果cursor所在元素与compareNum相同,那么只增加cursor。如果cursor所在元素与compareNum不同,那么除了增加cursor外,还需要压实操作:把cursor所在元素赋值给 compactIndex下标元素,更新compareNum为 cursor所在元素(因为现在它才是压实数组最后一个元素),当然compactIndex也得加1.当然cursor到底末尾,结束循环。原创 2020-04-01 23:36:18 · 273 阅读 · 0 评论 -
【LeetCode.1】两数之和
最重要的,这道题必须能想到target - current,才能得到最优解。current代表当前正在遍历的元素,令target - current = exist,那么exist就是已经遍历过的元素。如果target - current是已经遍历过的,那么说明两个目标就找到了。同样重要的,遍历的过程中,必须以字典形式 保存 已经遍历过的元素,key为元素,value为元素索引。在做算法题时,能只循环一次,就绝不循环两次。所以,遍历过程,保存元素信息,这点很重要。原创 2020-03-27 00:19:03 · 487 阅读 · 0 评论 -
【LeetCode.1】Two Sum (C++)
问题描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the...原创 2019-04-29 21:48:56 · 269 阅读 · 0 评论 -
【LeetCode.167】Two Sum II - Input array is sorted (C++)
问题描述Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numb...原创 2019-05-05 21:18:36 · 150 阅读 · 0 评论 -
【LeetCode.170】Two Sum III - Data structure design(C++)
问题描述Design and implement a TwoSum class. It should support the following operations:add and find.add - Add the number to an internal data structure.find - Find if there exists any pair of numbers w...原创 2019-05-05 22:11:30 · 215 阅读 · 0 评论 -
【LeetCode.15】3Sum (C++)
问题描述:Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.The solution set must not conta...原创 2019-04-30 22:14:34 · 367 阅读 · 0 评论 -
【LeetCode.18】4Sum (C++、Python3)
问题描述Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum ...原创 2019-05-02 13:50:18 · 341 阅读 · 0 评论 -
利用异或判断二进制数中的1的个数的奇偶性
异或压缩奇偶性信息二进制数中的1的个数的奇偶性: 如果一个二进制数中的1的个数为奇数,那么返回1;如果为偶数,那么返回0。给定二进制数01,它只有两位,那么它的奇偶性可以通过0^1 = 1获得,这里返回1,与它是奇数相符合。给定二进制数11,它只有两位,那么它的奇偶性可以通过1^1 = 0获得,这里返回0,与它是偶数相符合。总结:异或可以压缩两位上1个数的奇偶性。即压缩奇偶性信息为1或者0...原创 2018-11-25 16:21:30 · 14357 阅读 · 8 评论 -
Code Jam 2017 Qualification Round Problem A. Oversized Pancake Flipper
题目给定字符串 S 由+或-组成和 K ,现有一种操作:能将串 S 中连续 K 个字符进行反转( + 变成-以及 -变成+ )。问最少进行多少次上述操作,可以把串 S 变成全由 + 组成。当然也可能无解,即不能将所有字符都变成+。Oversized Pancake Flipper。输入:输出:Case #1: 3Case #2: 0Case #3: IMPOSSIBLE思路在整...原创 2018-11-14 20:25:54 · 462 阅读 · 0 评论 -
划分树应用——HDU 4417 Super Mario——python3实现
题目来自于HDU 4417。划分树的代码及原理请看我写的这篇博客划分树详解。题目重述【问题描述】:超级马里奥是世界著名水管工,他长这个样子(活跃下气氛\ ( > < ) / ),可是他的公主被老板抓住了,所以马里奥就要去老板的城堡救他的公主。把到城堡的路线看成一条原创 2018-06-24 16:26:10 · 443 阅读 · 0 评论 -
LeetCode add two numbers
问题描述: You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers an...原创 2017-09-26 13:25:29 · 260 阅读 · 0 评论 -
LeetCode two sum问题
问题描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use th...原创 2017-09-26 10:20:55 · 295 阅读 · 0 评论 -
HDU 4840 ROBOT——XY射线、二分查找
题目来源ROBOT Problem Description In the near future, robots are going to transport snacks to the contestants at Balkan Olympiads in Informatics. Robot carries all snacks on a single square tray. ≤Unfor...原创 2018-09-01 09:35:51 · 444 阅读 · 0 评论 -
LeetCode93 Restore IP Addresses 还原ip地址
题目描述此题为LeetCode原题Restore IP Addresses。 给定一个ip地址的字符串,但字符串中应该有的三个点被抹掉了,所以现在的字符串里面全是数字。要求是给定一个只有数字的字符串,输出该字符串可能构成的ip地址。 样例输入: 25525511135 样例输出: [“255.255.11.135”, “255.255.111.35”]思路第一:分段合理性...原创 2018-09-20 12:35:22 · 387 阅读 · 0 评论 -
LeetCode227 Basic Calculator II 基本计算器
题目描述Basic Calculator II给定一些非负整数和符号+, -, *, /,的组合,中间还有可能有空格。注意整数除法的截断应该往0的方向截断,比如3.5为3,-3.5为-3.样例输入输出:Input: “3+2*2”Output: 7Input: " 3/2 "Output: 1Input: " 3+5 / 2 "Output: 5注意:给定的表达式都是合法的。...原创 2018-09-22 17:02:04 · 314 阅读 · 0 评论 -
LeetCode179 Largest Number
题目描述Largest Number给定非负整数的列表,返回它们排列成的最大整数。样例1:Input: [10,2]Output: “210”样例2:Input: [3,30,34,5,9]Output: “9534330”注意:结果可能很大,所以返回类型应该是字符串。Python3 基于排序class Solution: # @param {integer...原创 2018-10-18 19:38:57 · 530 阅读 · 0 评论 -
八数码问题 BFS+A* 到N数码问题
八数码问题在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。【参考博客】:7种方法求解八数码问题。参考了其最后一种方法,即BFS+A*,但他的c++...原创 2018-11-12 15:27:58 · 3580 阅读 · 4 评论 -
POJ 2349 Arctic Network——最小生成树
问题来源Arctic Network。 Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in...原创 2018-08-28 19:31:16 · 294 阅读 · 0 评论