算法刷题
千瞱
世界上没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。
展开
-
LeetCode周赛-152
LeetCode周赛152做题整理做题时间:2019年9月3日1 质数排列[⭐⭐]这道题乍一看很简单,数据范围也很小,因此直接使用暴力法,首先找到n以内的质数的个数c,再分别将c和n-c的阶乘相乘即可:#include <cmath>...return jc(c) * jc(n-c) % (pow(10, 9) + 7)但是这样得不到正确答案,在学习...原创 2019-09-03 23:20:35 · 335 阅读 · 0 评论 -
LeetCode周赛-149
LeetCode Weekly Test 149 做题整理2019年8月11日1 一年中的第几天[⭐]给你一个按YYYY-MM-DD格式表示日期的字符串date,请你计算并返回该日期是当年的第几天。通常情况下,我们认为 1 月 1 日是每年的第 1 天,1 月 2 日是每年的第 2 天,依此类推。每个月的天数与现行公元纪年法(格里高利历)一致。这是一道简单题,考察...原创 2019-08-11 22:48:50 · 528 阅读 · 0 评论 -
动态规划系列(1)——动态规划入门
一般的,我们常用的解决问题的方法有暴力解决法、分而治之、二分法、贪心法和动态规划法。在你遇到一个问题怎么想都想不出其解法的时候,很可能就需要用到动态规划了;在你的题目中出现最优、最多、最好等字眼的时候,很可能可以使用动态规划问题来解决了。那么什么是动态规划(Dynamic Programming)呢?动态规划和分治思想、递归有着千丝万缕的关系。简单来说,分治思想是把一个问题分成一个一个的互不相...原创 2018-08-01 16:47:32 · 6587 阅读 · 3 评论 -
动态规划系列(2)——01背包问题的动态规划解法
问题:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?/* * Dynamic Programming : 0-1 package problem */#include <iostream>#include <vector>#include <memory.h>using names...原创 2019-05-10 12:06:37 · 748 阅读 · 0 评论 -
动态规划系列(4)——不相邻数最大和
给定数组A=[1,2,4,1,7,8,3],求出数组A中互不相邻的数的最大和。例如:如果选择了8,则不能选择7和3,在本例中最大的和为1+4+7+3=15分析,这是一道典型的使用动态规划求解的题目(当然能够使用万能的回溯法,但显然不是很棒),最优子结构为:f(i)=max{f(i - 2) + A[i], f(i - 1)}解释一下,对于第i位,如果选择A[i],则不能选择i...原创 2019-05-16 08:55:36 · 6271 阅读 · 4 评论 -
动态规划系列(5)——类24点游戏
给定一个数组如A=[3, 34, 4, 12, 5, 2],再给定一目标数字S。现要求判断在A中能否找到m个数字,使其和等于S,若可以找到这样的数字,返回True,否则返回false。分析:首先不可否认,这是一道可以使用回溯解决的问题,如果使用回溯,这个问题的时间复杂度为2^n,anyway, 我们先使用回溯实现一下练练手:import numpy as npA = [3, ...原创 2019-05-16 09:47:40 · 922 阅读 · 0 评论 -
动态规划系列(3)——爬楼梯
LeetCode 70: Climbing Stairs [★☆☆☆☆]假设你现在正在爬楼梯,楼梯有 n 级(1≤n≤50)。每次你只能爬 1级或者 2级,那么你有多少种方法爬到楼梯的顶部?第一步,得到递推关系式:C[i] = C[i-1] + C[i-2],你会发现,这不就是斐波那契数列么,详见动态规划入门斐波那契数列第二步,边界条件:C[0] = 0, C[1] = 1, C[...原创 2019-05-10 13:24:49 · 1973 阅读 · 0 评论 -
LeetCode37-解数独
1 题目描述编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。Note:给定的数独序列只包含数字 1-9 和字符 '.' 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。...原创 2020-03-02 12:31:46 · 301 阅读 · 0 评论 -
剑指Offer57-和为s的两个数字
剑指Offer典型题整理 - 争取做最好的题解整理时间:2020年02月21日1 题目描述输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]输入:nums = [10,26,30,31,47,60], ta...原创 2020-02-21 13:25:18 · 285 阅读 · 1 评论 -
剑指Offer52-两个链表的第一个公共节点
剑指Offer典型题整理 - 争取做最好的题解整理时间:2020年02月21日本题和 LeetCode 160题相同1 题目描述输入两个链表,找出它们的第一个公共节点。注意如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。2 题解链表题最适合画图分析了~...原创 2020-02-21 10:59:37 · 286 阅读 · 0 评论 -
剑指Offer50-n个色子的点数
剑指Offer典型题整理 - 争取做最好的题解整理时间:2020年02月20日1 题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例输入: 1输出: [0.16667,0.16667,0.16667,0.16667,0...原创 2020-02-20 21:54:40 · 266 阅读 · 0 评论 -
剑指Offer59-滑动窗口的最大值
剑指Offer典型题整理 - 争取做最好的题解整理时间:2020年02月19日本题和 LeetCode-239 相同1 题目描述给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 ...原创 2020-02-19 19:18:09 · 325 阅读 · 2 评论 -
剑指Offer12-矩阵中的路径
剑指Offer典型题整理 - 争取做最好的题解剑指Offer12-矩阵中的路径整理时间:2020年02月18日本题和 LeetCode-79 相同题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的...原创 2020-02-18 13:08:41 · 275 阅读 · 0 评论 -
剑指Offer24-反转链表
剑指Offer典型题整理 - 争取做最好的题解剑指Offer24-反转链表整理时间:2020年02月17日本题和 LeetCode-206 相同题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点,使用递归和迭代两种方式实现。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2-&...原创 2020-02-18 12:06:40 · 239 阅读 · 0 评论 -
剑指Offer03-数组中重复的数字
剑指Offer典型题整理 - 争取做最好的题解剑指Offer03-数组中重复的数字整理时间:2020年02月18日题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 ...原创 2020-02-18 11:59:53 · 312 阅读 · 0 评论 -
算法刷题笔记(19年12月)
每日算法题(12月)作者 | Howard Wonanut目录:文章目录每日算法题(12月)0x01 三数之和???? 题目描述???? 分析与解答???? 分析与解答20x02 查询无效交易???? 题目描述0x03 最接近的三数之和???? 题目描述0x04 电话号码的字母组合???? 题目描述0x06 验证二叉搜索树???? 题目描述0x08 找树左下角的值???? 题目描述我的解法其他解法0x09 交替位二进制数???? 题目描述我的解...原创 2019-12-31 14:53:41 · 745 阅读 · 2 评论 -
[算法]蓄水池抽样算法
问题背景:现有一个单链表,要求随机选择链表中的一个节点并返回节点值,并且保持链表中每个节点被选中的概率相同。刚看到这个问题,很多人肯定会很不屑:这有何难?先求得链表长度,再生成一个随机数,返回对应位置的节点的值不就完事:# Definition for singly-linked list.# class ListNode(object):# def __init__...原创 2019-12-28 14:40:34 · 309 阅读 · 0 评论