刷题
文章平均质量分 62
Magnum_yuanz
这个作者很懒,什么都没留下…
展开
-
算法_数组前缀和处理
对于数组和的处理考虑i到j的和 为 sum(:j)-sum(:i)用来替代中间和974. 和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1原创 2020-05-28 18:01:31 · 228 阅读 · 0 评论 -
python 最大公因数(欧几里得法)以及最小公倍数
914. 卡牌分组给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:...原创 2020-04-07 17:10:33 · 1226 阅读 · 0 评论 -
top-k的应用
top-k的应用topk指的是,保存一段数据的最大或者最小的k位数,在code中或者工程中右很重要的应用。举例:查询超大量数据中 最小或者最大的 第 k位数。正常使用排序缺点:内存占用会超出正常范围相对简单的做法是,遍历K次,每次选出最小(或者最大的)数。最后返回结果缺点:时间复杂度为KN,而且需要删除原数据中的数或者要在已有数据中进行判断简化:形成一个topk的 最大堆。内部使...原创 2020-03-15 18:40:14 · 707 阅读 · 0 评论 -
数据结构_单调栈及其应用
单调栈单调栈指的是 栈内元素 单调递增 或者 单调递减的栈。一般我们可以用stack来模拟栈。要维持栈的单调性,需要对新来的元素进行判定。例如:我们需要一个单调递增栈[]。如果stack为空直接填入即可。新元素时如果比栈顶元素 stack[-1] 大 则 直接append()添加即可;如果新来元素比栈顶元素stack[-1] 小 则 pop()循环直到大即可。(对于相等值的元素,...原创 2020-03-07 18:32:29 · 148 阅读 · 0 评论 -
*leetcode刷题_(剑指offer_滑动窗口)_57_和为s的连续数列/和为s的两个数字
面试题57. 和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 ...原创 2020-02-27 17:22:21 · 138 阅读 · 0 评论 -
leetcode刷题_(剑指offer_归并排序)_51寻找逆序对
面试题51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解答:根据之前的经验可知 此题使用归并排序解答。1 归并使用双封闭的二分[ l ,m ] [ m+1 , r ],即能取到...原创 2020-02-25 05:00:42 · 169 阅读 · 0 评论 -
leetcode刷题(剑指offer)_(二叉堆)_40最小的k个数字
面试题40. 最小的k个数输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]解答:这是一道简单题。最简单的做法是先sort,再取前k...原创 2020-02-20 20:36:52 · 313 阅读 · 0 评论 -
leetcode刷题_(剑指offer_双指针)_21奇偶排列
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。提示:1 <= nums.length <= 500001 <= nums[i] <= 10000来源:力扣(LeetCode)链...原创 2020-02-16 19:08:39 · 131 阅读 · 0 评论 -
***leetcode刷题_(剑指offer_11_二分法/ 53_二分查找排序数组中的数字)
code11: 旋转数组的最小值把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力扣(LeetCode)链接:h...原创 2020-02-15 19:40:20 · 144 阅读 · 0 评论 -
leetcode刷题_(sort,LinkedList)_code148(链表排序)
code148: Sort ListAdd to ListShareSort a linked list in O(n log n) time using constant space complexity.Example 1:Input: 4->2->1->3Output: 1->2->3->4Example 2:Input: -1->5...原创 2020-02-13 21:05:23 · 134 阅读 · 0 评论 -
*leetcode刷题_(DP,recursion,tree)_code124(树的最大值path)_code136_(分裂单词)
code124: Binary Tree Maximum Path Sumnon-empty binary tree, find the maximum path sum.For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree alo...原创 2020-02-10 18:09:10 · 296 阅读 · 0 评论 -
*leetcode刷题(剑指offer9)_(DP)_斐波那契数列
斐波那契数列 本身就是一个递归的过程(动态规划的问题)如果求第n个数时,返回的参数是n-1以及n-2。普通的递归写法: def count(self,n):#when we use recursion, we may use one result too many times, which leads to a high complexity if n ==0: ...原创 2020-02-09 21:50:06 · 81 阅读 · 0 评论 -
**leetcode刷题_(DP,backtraking)_code1155(掷骰子)
CODE1155:Number of Dice Rolls With Target SumYou have d dice, and each die has f faces numbered 1, 2, …, f.Return the number of possible ways (out of fd total ways) modulo 10^9 + 7 to roll the dice ...原创 2020-02-09 21:03:24 · 2154 阅读 · 0 评论 -
*leetcode刷题_(math,KA,改变思路)_code121(卖袜子)
code121:Best Time to Buy and Sell StockSay you have an array for which the ith element is the price of a given stock on day i.If you were only permitted to complete at most one transaction (i.e., bu...原创 2020-02-07 21:11:29 · 192 阅读 · 0 评论 -
leetcode刷题_(arr,dfs,balanced binary tree)_code105(判断是否为平衡二叉树)
code110:Balanced Binary TreeGiven a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as:a binary tree in which the left and right subtrees ...原创 2020-02-05 23:01:54 · 183 阅读 · 0 评论 -
***leetcode刷题_(arr,dfs)_code79(单词寻找)
code79:Word SearchGiven a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontal...原创 2020-02-04 20:01:02 · 141 阅读 · 0 评论 -
***leetcode刷题_(quicksort,dutch partition problem)_code75(颜色分类)
code75: Sort Colorsan array with n objects colored red, white or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we wi...原创 2020-02-03 20:40:48 · 160 阅读 · 0 评论 -
leetcode刷题(剑指offer)_(linkedlist)_根据中序遍历以及前序遍历显示完整链表/BST的后序遍历
解答:前序遍历:中左右中序遍历:左中右后序遍历:中右左根据 前序 可以确定root,然后在中序中可以找到 左右 子树范围。进一步递归即可找到所有点。代码:class Node: def __init__(self,value): self.value = value self.left = None self.right = ...原创 2020-02-01 21:17:00 · 191 阅读 · 0 评论 -
leetcode刷题(bytedance面试题)_(2darr,math)_寻找n边形的k等分点
解答:想法:遍历点,当当前遍历的长度大于平均长度时,target就在这条边上。根据之前的last_len以及现有两点的趋势(x平还是y平)来决定 target的增益以及方向(上下左右)。细节:1 为了让点遍历能回到 原点 ,在数组后面添加一个 头2 对应的生成长度数组 存储长度数据(同样要在尾部加 头),得到target点之间的长度average_len(t0到t1的长度)3 ...原创 2020-01-30 17:58:12 · 1461 阅读 · 0 评论 -
leetcode刷题_(arr,Kadane Algorithm,DP,Greedy)_code55/45(跳子游戏1/2)
code55: Jump GameGiven an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position....原创 2020-01-29 17:19:32 · 118 阅读 · 0 评论 -
leetcode刷题_(arr,Kadane Algorithm)_code53(最大子数组)
code53: Maximum SubarrayGiven an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.Example:Input: [-2,1,-3,4,-1,2,1,-5,4...原创 2020-01-28 19:12:08 · 182 阅读 · 0 评论 -
leetcode刷题_(arr,hashtable)_code49(数组元素归类)
code49: Group AnagramsGiven an array of strings, group anagrams together.Example:Input: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],Output:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]解答:1 第一想...原创 2020-01-28 02:43:21 · 164 阅读 · 0 评论 -
leetcode刷题_(arr,dfs,recursion)_code39/40(数组中寻找固定元素和1/2)
code39:Combination SumGiven a set of candidate numbers (candidates) (without duplicates) and a target number (target), find all unique combinations in candidates where the candidate numbers sums to t...原创 2020-01-22 18:50:17 · 111 阅读 · 0 评论 -
***leetcode刷题_(arr,math)_code31(下一个数列)_(arr,str,math,回溯)_code22(产生正确的插入顺序的括号)
code31: Next PermutationImplement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it ...原创 2020-01-20 18:53:27 · 177 阅读 · 0 评论 -
leetcode刷题_day14_(str,hashmap)_code3(最长非重子串)
code3: Longest Substring Without Repeating CharactersGiven a string, find the length of the longest substring without repeating characters.Example 1:Input: “abcabcbb”Output: 3Explanation: The ans...原创 2020-01-14 18:33:15 · 102 阅读 · 0 评论 -
leetcode刷题_day13_(链表)_code82(删除链表中重复的元素)
code82: Remove Duplicates from Sorted List IIGiven a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.Example 1:Input: 1->2-...原创 2020-01-11 18:19:39 · 147 阅读 · 0 评论 -
***leetcode刷题_day12_(树)_code100(相同树)_code94(二叉树中序遍历)
code100:same treeGiven two binary trees, write a function to check if they are the same or not.Two binary trees are considered the same if they are structurally identical and the nodes have the same...原创 2020-01-10 19:20:45 · 377 阅读 · 0 评论 -
leetcode刷题_day11_(链表)_code21(合并两个有序链表)_code23(合并K个有序链表)
code21. Merge Two Sorted ListsMerge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.Example:Input: 1->2->...原创 2020-01-08 20:53:20 · 116 阅读 · 0 评论 -
leetcode刷题_day10_(链表)_code19(移除链表的倒数第n个节点)
code19: Remove Nth Node From End of ListGiven a linked list, remove the n-th node from the end of list and return its head.Example:Given linked list: 1->2->3->4->5, and n = 2.After rem...原创 2020-01-07 20:07:10 · 150 阅读 · 0 评论 -
leetcode刷题_day9_(链表)_code2(两数相加)
code2 Add Two Numbers:Add to ListShareYou 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 singl...原创 2020-01-07 09:08:08 · 128 阅读 · 0 评论 -
*leetcode刷题_day8_(math,int,递归)剑指offer11(数值的整数次方)
剑指offer11 实现power方法,不使用库函数:也就是说求 a**b,不直接使用power方法。解答:最简单的循环相乘法,临界条件:累计乘b次得到结果边界条件:base=0时,输出全为0;exp为0时,输出全为1(对于0**0无意义,可以单独得到结果,解释即可);exp为正时,正常;exp为负时,结果为1/res。代码:省略。tips:可能遇到超时问题,一步步相乘时,过程不...原创 2020-01-04 18:07:36 · 97 阅读 · 0 评论 -
leetcode刷题_day7_(math,int)code12(整数转罗马数字)
code12整数转罗马数字:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 I...原创 2020-01-04 15:57:02 · 151 阅读 · 0 评论 -
leetcode刷题_day6_(math,字符串)code7(字符串转整数)
code7字符串转整数:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多...原创 2020-01-03 07:11:18 · 157 阅读 · 0 评论 -
leetcode刷题_day5_code62(不同路径)_code63(不同路径2)
code62:不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解...原创 2019-12-27 03:32:53 · 202 阅读 · 0 评论 -
leetcode刷题_day4_(动态规划)_code5(最长回文子串)
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring...原创 2019-12-26 03:11:31 · 162 阅读 · 0 评论 -
leetcode刷题_day3_(array)_code4(寻找两个有序数组的中位数)
困难题需要时间复杂度为log(m+n)给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 =...原创 2019-12-24 13:46:26 · 145 阅读 · 0 评论 -
leetcode刷题_day1_code1(两数之和)+code1191(K 次串联后最大子数组之和)(QQ音乐面试题)
code:1给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力...原创 2019-12-24 11:39:15 · 247 阅读 · 0 评论 -
leetcode刷题_day2_(array)_code11(盛最多水的容器 )
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部...原创 2019-12-24 11:37:09 · 174 阅读 · 0 评论