![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
七号门房
这个作者很懒,什么都没留下…
展开
-
JZ45 把数组排成最小的数
JZ45 把数组排成最小的数描述输入一个正整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323。数据范围:0<=len(numbers)<=100思路如果有两个字符串a,b,若a + b < b + a, 显然我们希望a排在b的前面,因为a排在前面可以使结果更小。于是我们就自定义排序规则,那么最后的结果肯定是最小的。import functools原创 2021-10-30 09:10:34 · 61 阅读 · 0 评论 -
圆圈中最后剩下的数(约瑟夫环问题)
圆圈中最后剩下的数(约瑟夫环问题)描述每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0… m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客礼品,请你试着想下,哪个小朋友会得到这份礼品呢?数原创 2021-10-30 16:04:42 · 287 阅读 · 0 评论 -
剑指offer—位运算专题
前言本篇文章记录剑指offer(第二版)位运算专题的全部题目,并配合详细的讲解题目列表JZ65 不用加减乘除做加法JZ15 二进制中1的个数JZ16 数值的整数次方JZ56 数组中只出现一次的两个数字JZ64 求1+2+3+…+n1.JZ65 不用加减乘除做加法描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。数据范围:两个数都满足 0≤n≤1000进阶:空间复杂度 O(1),时间复杂度 O(1)思路首先看十进制是如何做的: 5+7=12,三步走原创 2021-11-02 11:20:54 · 127 阅读 · 0 评论 -
009. 乘积小于 K 的子数组
009. 乘积小于 K 的子数组题目给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。思路双指针 · 滑动窗口我们使用一重循环枚举 right,同时设置left 的初始值为 0。在循环的每一步中,表示right 向右移动了一位,将乘积乘以 nums[right]。此时我们需要向右移动left,直到满足乘积小于k 的条件。每次移动时,需要将乘积除以nums[left]。当 left 移动完成后,对于当前的right,就包含了right−left+1 个乘积原创 2021-12-07 11:51:15 · 179 阅读 · 0 评论 -
085. 生成匹配的括号
生成匹配的括号1.题目正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。2.思路1)括号组合第一个数肯定是 (2) 左括号 ( 的个数肯定大于等于右括号 ) 的个数,也就是说只有当组合中的左括号数小于右括号数时,才能增加右括号3)最后一个肯定是右括号 )class Solution: def generateParenthesis(self, n: int) -> List[str]: res = []原创 2021-12-06 16:20:14 · 140 阅读 · 0 评论 -
2121. 相同元素的间隔之和
1. 题目给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和 arr[j] 之间的间隔是 |i - j| 。返回一个长度为 n 的数组 intervals ,其中 intervals[i] 是 arr[i] 和 arr 中每个相同元素(与 arr[i] 的值相同)的 间隔之和 。注意:|x| 是 x 的绝对值。2.思路主要考点:哈希,前缀和2.1 整体思路1 . 从前往后遍历,将相同元素出现的索原创 2021-12-29 23:44:15 · 399 阅读 · 0 评论 -
114. 二叉树展开为链表
题目链接https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/思路1.将左子树插入到右子树2.原来的右子树插入到左子树最右边的结点3.继续下一个操作,直到右子树为nullvoid flatten(TreeNode* root) { while(root!=nullptr) { if(root->left==nullptr) {原创 2021-08-18 15:39:56 · 55 阅读 · 0 评论