搜索内容

包含标签:LeetCode 的文章
  • Java剑指 Offer II 090. 环形房屋偷盗(击败100%用户)
    其他

    Java剑指 Offer II 090. 环形房屋偷盗(击败100%用户)

    题目: 一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。 示例 : 输入:nums = [2,3,2] 输出:3 解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。 思路: 跟上一题偷钱区别在于上一题的房子排布是线性结构,隔着偷可以从头到尾 这一次是环形结构,也就是上一次的结构但是在结尾时如果你从第一个房子起偷,你就不能偷最后一个房子。如果你从第二个房子起偷,那么可以偷最后一个房子。判断一下就可以。 复杂度: 时间:循环O(n)。 空间:用了Arrays.copyOfRange,O(n)。 代码: //先处理特殊情况
    admin 今天
  • leetcode-146. LRU 缓存机制
    其他

    leetcode-146. LRU 缓存机制

    leetcode-146. LRU 缓存机制 题目: 代码: #include #include #include using namespace std; struct DLinkedNode{ int key,value; DLinkedNode *prev,*next; }; unordered_mapcache; DLinkedNode* head,*tail; int size; int capacity; LRUCache(int _capacity):capacity(_capacity),size(0) { head = new DLinkedNode; tail = new DLinkedNode; head->next = tail; tail->prev = head; }
    admin 今天
  • Leetcode–Java–306. 累加数
    其他

    Leetcode–Java–306. 累加数

    题目描述 累加数是一个字符串,组成它的数字可以形成累加序列。 一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。 给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。 说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。 样例描述 思路 方法一:字符串模拟 + 高精度加法 O(n^3) 枚举第一段的长度,枚举第二段的长度,看和是否匹配第三段的长度。枚举中不能枚举前导0的数。匹配的话不断的移动a,b,c。 java的substring是表示首尾索引,并且左闭右开。初始让a=-1且每段都初始指向该段前一个数,是类似虚拟头结点的思想,为了让处理第一个数和后面保持一致。高精度加法模板要背过。(记得先转化为stringbuilder逆序,也可以直接从后往前遍历)
    admin 今天
  • iOS LeetCode ☞ 除法求值
    其他

    iOS LeetCode ☞ 除法求值

    给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件,其中 equations[i] = [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi = values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题,其中 queries[j] = [Cj, Dj] 表示第 j 个问题,请你根据已知条件找出 Cj / Dj = ? 的结果作为答案。 返回 所有问题的答案 。如果存在某个无法确定的答案,则用 -1.0 替代这个答案。如果问题中出现了给定的已知条件中没有出现的字符串,也需要用 -1.0 替代这个答案。 注意:输入总是有效的。你可以假设除法运算中不会出现除数为 0 的情况,且不存在任何矛盾的结果。 示例 1: 输入:equations = [["a","b"],["b","c"]], values
    admin 今天
  • 19. 删除链表的倒数第 N 个结点
    其他

    19. 删除链表的倒数第 N 个结点

    给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0),
    admin 今天
  • LeetCode 729. 我的日程安排表 I — set
    其他

    LeetCode 729. 我的日程安排表 I — set

    我的日程安排表 I 实现一个 MyCalendar 类来存放你的日程安排。如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排。 当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生 重复预订 。 日程可以用一对整数 start 和 end 表示,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end 。 实现 MyCalendar 类: MyCalendar() 初始化日历对象。 boolean book(int start, int end) 如果可以将日程安排成功添加到日历中而不会导致重复预订,返回 true 。否则,返回 false 并且不要将该日程安排添加到日历中。 示例: 输入: [“MyCalendar”, “book”, “book”, “book”] [[], [10, 20], [1
    admin 今天
  • 3 无重复最长子串【c++,哈希表】
    其他

    3 无重复最长子串【c++,哈希表】

    解题思路 滑动窗口+哈希表 用unordered_maptemp_s记录单个字符和下标,记录每一次开始的下标left; 如果第i个字符不在哈希表中,就把这一个字符加进去,如果第i个字符在哈希表中,则left从i+1开始,子串长度为i-left+1 注: 找到的某一个字符不仅要在哈希表中,而且要在left和i之间才算,所以这里限制 if (it != temp_s.end()&&it->second>=left) 代码 class Solution { public: int lengthOfLongestSubstring(string s) { if (s.size() == 0) return 0; unordered_maptemp_s; int left = 0;
    admin 今天
  • Java剑指 Offer II 089. 房屋偷盗(击败100%用户)
    其他

    Java剑指 Offer II 089. 房屋偷盗(击败100%用户)

    题目: 一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 : 输入:nums = [1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。      偷窃到的最高金额 = 1 + 3 = 4 。 思路: 和上一题基本相同。动态规划 用dp[n]来表示前n座房子能偷得最多的钱 前n座房子最多偷的钱要么就是偷到了n-1座房子,这个时候就不能偷n的钱了 此时dp[n] = dp[n-1]; 还有一种可能性,就是当前房子的钱加上前n-2间房子钱要大于这个前n-1房子钱 此时dp[n] = dp[n-2]+nums[n] 两者取大就可以了 可以从第一间或者第二间房子起偷。 可以优化一下空间复杂度
    admin 今天
  • 高频leetcode排序部分:88. 合并两个有序数组
    其他

    高频leetcode排序部分:88. 合并两个有序数组

    88. 合并两个有序数组 难度简单1201 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。 示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。 示例 2: 输入:
    admin 今天
  • java leetcode之[简单]844. 比较含退格的字符串
    其他

    java leetcode之[简单]844. 比较含退格的字符串

    题目的链接在这里:https://leetcode-cn.com/problems/backspace-string-compare/ 目录 题目大意一、示意图二、解题思路StringBuffer 题目大意 给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,请你判断二者是否相等。# 代表退格字符。 如果相等,返回 true ;否则,返回 false 。 注意:如果对空文本输入退格字符,文本继续为空。 一、示意图 二、解题思路 StringBuffer StringBuffer 代码如下: class Solution { public boolean backspaceCompare(String s, String t) { StringBuffer sb1=new StringBuffer();
    admin 今天
  • 【leetcode】53最大子数组和(c++&python)
    其他

    【leetcode】53最大子数组和(c++&python)

    目录 问题: 分析 代码 参考: 问题: 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [5,4,-1,7,8] 输出:23 分析 方法一:动态求和。我们用 f(i) 代表以第 i个数结尾的【连续子数组的最大和】,用一个循环求出所有f(i)。考虑到 f(i) 只和 f(i−1) 相关,于是我们可以只用一个变量 pre 来维护对于当前f(i) 的f(i−1) 的值是多少,从而让空间复杂度降低到 O(1),这有点类似「滚动数组」的思想。 方法二:分治算法。(彻底搞明白再补上) 代码 //方法一:动态求和 class Solution { public: int maxSubArra
    admin 今天
  • java leetcode之[中等]59. 螺旋矩阵 II
    其他

    java leetcode之[中等]59. 螺旋矩阵 II

    题目的链接在这里:https://leetcode-cn.com/problems/spiral-matrix-ii/ 目录 题目大意一、示意图二、解题思路正常逻辑 题目大意 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 一、示意图 二、解题思路 正常逻辑 正常逻辑 代码如下: class Solution { public int[][] generateMatrix(int n) { //四个方向 向右的话 而且是需要 右 下 左 上 int[] x={0,1,0,-1}; int[] y={1,0,-1,0}; //当确定是n的时候 就可以确定数组大小了 int[][] res=new int
    admin 今天
  • java leetcode之[中等]986. 区间列表的交集
    其他

    java leetcode之[中等]986. 区间列表的交集

    题目的链接在这里:https://leetcode-cn.com/problems/interval-list-intersections/ 目录 题目大意一、示意图二、解题思路正常逻辑 题目大意 给定两个由一些 闭区间 组成的列表,firstList 和 secondList ,其中 firstList[i] = [starti, endi] 而 secondList[j] = [startj, endj] 。每个区间列表都是成对 不相交 的,并且 已经排序 。 返回这 两个区间列表的交集 。 形式上,闭区间 [a, b](其中 a <= b)表示实数 x 的集合,而 a <= x <= b 。 两个闭区间的 交集 是一组实数,要么为空集,要么为闭区间。例如,[1, 3] 和 [2, 4] 的交集为 [2, 3] 。 一、示意图 二、解题思路 正常逻辑 正常逻辑
    admin 今天
  • java leetcode之[中等]56. 合并区间
    其他

    java leetcode之[中等]56. 合并区间

    题目的链接在这里:https://leetcode-cn.com/problems/merge-intervals/ 目录 题目大意一、示意图二、解题思路贪心加数组原地修改 题目大意 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 一、示意图 二、解题思路 贪心加数组原地修改 贪心加数组原地修改 代码如下: class Solution { public int[][] merge(int[][] intervals) { /** * 贪心加数组原地修改 */ //先根据左边界来进行排序 //第二个参数是 Comparat
    admin 今天
  • 350. 两个数组的交集 II
    其他

    350. 两个数组的交集 II

    链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2,2] 示例 2: 输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4] 输出:[4,9] 提示: 1 <= nums1.length, nums2.length <= 1000 0 <= nums1[i], nums2[i] <= 1000 进阶: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums
    admin 今天
  • 图解(多种解法)LeetCode11:盛最多水的容器
    其他

    图解(多种解法)LeetCode11:盛最多水的容器

    LeetCode11:盛最多水的容器 给你n个非负整数a1,a2,… … ,an,每个数代表坐标中的一个点(i, a)。在坐标内画n条垂直线,垂直线i的两个端点分别为(i, ai)和(i, 0)。找出其中的两条先,使得它们与x轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器 示例: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 输入:[1,1] 输出:1 提示: n == height.length2 <= n <= 10^50 <= height[i] <= 10^4 思路: 首先看到这道题有点迷糊,到达再说什么??? 其实可以理解成一个数组和角标构成的柱状图,然后柱子就是杯壁,往里盛水 我们可以分步做解,如果一个数组[1, ,2, 1, 2]来说,我们以第一个数组作为边界,计算出其能容纳的最多的水,然后以第二个为边界,计算出其能容纳的最多的水,知道遍历数组,取出最
    admin 今天
  • 一. 数组_前缀和数组_303. 区域和检索 – 数组不可变
    其他

    一. 数组_前缀和数组_303. 区域和检索 – 数组不可变

    题目描述 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 实现 NumArray 类: NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j])) 示例: 输入: [“NumArray”, “sumRange”, “sumRange”, “sumRange”] [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]] 输出: [null, 1, -1, -3] 解释: NumArray numArray = new NumArray([-2, 0, 3, -5,
    admin 今天
  • LeetCode刷题笔记 双指针 碰撞指针
    其他

    LeetCode刷题笔记 双指针 碰撞指针

    碰撞指针简介 碰撞指针 Opposite directional:两个指针指向同一线性表,但是遍历方向相反,一个指针指向开头,另一个指向末尾,它们相向移动直到相遇或满足其他特殊条件为止 344 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。 输入一个字符数组,输出将其反转的字符数组 输入:s = [“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”] 解析: ​ 本题使用双指针可以快速简单地解决。我们定义一对碰撞指针分别指向字符数组的头和尾,然后循环执行如下两步,直到两指针相遇循环终止: 交换 head 和 tail 指向的元素head 和 tail 相向移动一步 class Solution { public: void reverseString(vector& s) { int head = 0
    admin 今天
  • leetcode 506. 相对名次
    其他

    leetcode 506. 相对名次

    Arrays.sort(arr, (a, b) -> a - b)是对数组进行冒泡排序 Integer.toString(int par1,int par2),par1表示要转成字符串的数字,par2表示要转成的进制表示 谢谢官方题解 我好菜 乌鱼子 class Solution { public String[] findRelativeRanks(int[] score) { int n = score.length; String[] ranking={"Gold Medal","Silver Medal","Bronze Medal"}; int[][] arr=new int[n][2]; for(int i=0;ib[0]-a[0]);
    admin 今天
  • python list.sort()根据多个条件排序
    其他

    python list.sort()根据多个条件排序

    问题需求 给出一个字符串数组words组成的一本英语词典。从中找出最长的一个单词,该单词是由words词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。 若无答案,则返回空字符串。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-word-in-dictionary 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 于是想根据: 长度来排序长度相同的根据字典顺序(a->z)进行排序 有2个条件 实现 words.sort(key = lambda c: (-len(c), c)) 解释: 条件1:长度,不想写reverse=True,所以加了负号 条件2:字母本身,即lambda函数返回元组的第二个元素c 对list.sort()有不明白的可以参考: py
    admin 今天
  • LeetCode 698. 划分为k个相等的子集 –排序+搜索
    其他

    LeetCode 698. 划分为k个相等的子集 –排序+搜索

    划分为k个相等的子集 给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。 提示: 1 <= k <= len(nums) <= 16 0 < nums[i] < 10000 题解 和这个题目一个套路:LeetCode 473. 火柴拼正方形 --排序后+深度优先搜索。 AC代码 class Solution { public: int dp[20]; bool dfs(int index,vectornums,int k,int sum) { if(index>=nums.size())
    admin 今天
  • Leetcode–Java–506. 相对名次
    其他

    Leetcode–Java–506. 相对名次

    题目描述 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 样例描述 示例 1: 输入:score = [5,4,3,2,1] 输出:["Gold Medal","Silver Medal","
    admin 今天
  • LeetCode 155. 最小栈
    其他

    LeetCode 155. 最小栈

    好久没刷题了,最近刷题见到这个一个题,题目本身很简单,做一个辅助栈,时间效率跑过100%的用户,但是在讨论区看到 一次面试的时候,面试官要求不开辅助栈的做法,感觉这个值得思考。做法是在栈内记录一个最小值,同时栈内存储于最小值的差值。但任然离不开栈的先进后出性质。 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/min-stack 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 /* * @lc app=leetcode.cn id=155 lang=cpp * * [155]
    admin 今天
  • 力扣题解:剑指 Offer 28. 对称的二叉树
    其他

    力扣题解:剑指 Offer 28. 对称的二叉树

    题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 解题思路 递归判断left节点和right节点值是否相等 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public boolean isSymmetric(TreeNode root) { if (root
    admin 今天
  • 506. 相对名次
    其他

    506. 相对名次

    相对名次 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 示例 1: 输入:score = [5,4,3,2,1] 输出:["Gold Medal","Silver Medal","Bronze
    admin 今天
  • 演唱会 (15 分)
    其他

    演唱会 (15 分)

    持续时间是该音乐会中所有歌曲的持续时间之和。 请帮助xrf,找出演唱会持续时间之间可能的最小差异(分钟)。 输入格式: 第一行包含一个整数t(1≤t≤1000)–测试案例的数量。 每个测试案例由一行包含三个整数a,b,c(1≤a,b,c≤10 9 )–一分钟、两分钟和三分钟的歌曲数量。 输出格式: 对于每个测试案例,输出演唱会持续时间之间的最小可能差异(分钟)。 输入样例: 在这里给出一组输入。例如: 4 1 1 1 2 1 3 5 5 5 1 1 2 输出样例: 在这里给出相应的输出。例如: 0 1 0 1 #include using namespace std; int main(){ int n,a,b,c; cin>>n; while(n--){ int ans=0; cin>>a>>b>>c; ans=a+b*2+c*3; if
    admin 今天
  • " alt="LeetCode第100题 Same Tree(c++)">
    其他

    LeetCode第100题 Same Tree(c++)

    Given the roots of two binary trees p and q, 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 value. Example 1: Input: p = [1,2,3], q = [1,2,3] Output: true Example 2:  Input: p = [1,2], q = [1,null,2] Output: false Example 3: Input: p = [1,2,1], q = [1,1,2] Output: false   Constraints: The number of nodes in both trees is in the range
    admin 今天
  • LeetCode刷题记
    其他

    LeetCode刷题记

    juejuezi 天天撸简单题,中等看题解,遇到困难睡大觉。
    admin 今天
  • 蓝桥杯——2013B组真题第七题 错误票据
    其他

    蓝桥杯——2013B组真题第七题 错误票据

    蓝桥杯——2013B组第七题 错误票据 题目描述 某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号,全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID,假设断号不可能发生在最大和最小号。要求程序首先输入一个整数N(N<100)表示后面数据行数,接着读入N行数据,每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),每个整数代表一个ID号。要求程序输出1行,含两个整数m n,用空格分隔,其中,m表示断号ID,n表示重号ID。 例如,用户输入: 2 5 6 8 11 9 10 12 9 则程序输出: 7 9 再例如,用户输入: 6 164 178 108 109 180 155 141 159
    admin 今天
  • Windows 环境下安装Redis服务教程
    其他

    Windows 环境下安装Redis服务教程

    Windows 环境下安装Redis服务教程 Redis官网并没有提供windows的安装包,github有第三方制作的windows安装包 下载地址: https://github.com/tporadowski/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。 解压zip文件后,内容如下: 在资源管理器地址栏,键入 cmd,即可打开当前目录的 cmd 窗口 在cmd 窗口中键入如下命令 redis-server.exe redis.windows.conf 如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启
    admin 今天
  • javaScript–506. 相对名次
    其他

    javaScript–506. 相对名次

    给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 示例 1: 输入:score = [5,4,3,2,1] 输出:[“Gold Medal”,“Silver Medal”,“Bronze Medal
    admin 今天
  • Leetcode之树
    其他

    Leetcode之树

    1 二叉树镜像 struct TreeNode* mirrorTree(struct TreeNode* root){ if(root == NULL) return root; struct TreeNode * tmp = root->right; root->right = root->left; root->left = tmp; mirrorTree(root->right); mirrorTree(root->left); return root; } 2 二叉树的深度 对于每个根节点来说,寻找其每个子节点的最大深度 后序遍历,递归实现 int maxDepth(struct TreeNode* root){ if(root == NULL) return 0; else
    admin 今天
  • 深度优先搜索 VS. 广度优先搜索
    其他

    深度优先搜索 VS. 广度优先搜索

    (一)深度优先搜索 深度优先搜索(Depth First Search),顾名思义就是在搜索树或图的时候优先考虑深度。 下面这两个大大写的帖子就已经很清楚了: 基本算法——深度优先搜索(DFS)和广度优先搜索(BFS) - 简书 浅谈回溯与深度优先搜索_James_T_Kirk的博客-CSDN博客 对于深度优先搜索,当某结点还有没有遍历到的左、右节点时,就遍历(优先左节点),即将遍历的子节点压入栈中;如果某节点的左右节点都已经遍历过了,那么就将该节点从栈中弹出 这就有点像回溯了,事实上,它的确也有一种回溯的思想在里面 当一个节点已经完成了它的使命,即它已经没有子节点可以遍历的时候,我们就应该回溯到它的上一个节点,继续遍历后面的子树   例如上图中,已经遍历到5了,5周围已经没有可以遍历的节点了,那么就要将5从栈中弹出,回溯到4,4还有一个可以遍历的6,所以下一个遍历的节点就是6。往后亦是如此。 直到遍历完整棵树以后,将所有的节点从栈中弹出,栈为空,至此DFS结束。 (二)广度优先搜索 广度优先搜索(Breadth Fir
    admin 今天
  • 论文阅读中一些常见的名词解释
    其他

    论文阅读中一些常见的名词解释

    Pretrained model (预训练模型) 一般情况下预训练模型都是大型模型,具备复杂的网络结构,众多的参数量,以及在足够大的数据集下进行训练而产生的模型. 在NLP领域,预训练模型往往是语言模型,因为语言模型的训练是无监督的,可以获得大规模语料,同时语言模型又是许多典型NLP任务的基础,如机器翻译,文本生成,阅读理解等,常见的预训练模型有BERT, GPT, roBERTa, transformer-XL等. Fine-tuning (微调) 根据给定的预训练模型,改变它的部分参数或者为其新增部分输出结构后,通过在小部分数据集上训练,来使整个模型更好的适应特定任务. (后续继续补充)
    admin 今天
  • 力扣题解:面试题 03.01. 三合一:只使用一个数组实现三个栈
    其他

    力扣题解:面试题 03.01. 三合一:只使用一个数组实现三个栈

    题目 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。 构造函数会传入一个stackSize参数,代表每个栈的大小。 解题思路 一个数组保存3个栈的值 stack1: values[0], values[3], values[6]…stack2: values[1], values[4], values[7]…stack3: values[2], values[5], values[8]… 代码 class TripleInOne { // 3个栈的值 // stack1:[0,3,6...] , stack2:[1,4,7...] , stack3:[2,5,8...] priva
    admin 今天
  • 力扣题解:面试题 03.02. 栈的最小值
    其他

    力扣题解:面试题 03.02. 栈的最小值

    题目 请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。 解题思路 2个栈实现最小栈 stack保存栈的数值minStack保存最小值注意保持stack和minStack中最小值的同步 代码 import java.util.Deque; import java.util.LinkedList; class class MinStack { Deque stack, minStack; public MinStack() { stack = new LinkedList<>(); minStack = new LinkedList<>(); } public void push(int x) { // 入栈 s
    admin 今天
  • Leetcode 字典序
    其他

    Leetcode 字典序

    字典序 321. 拼接最大数★316. 去除重复字母386. 字典序排数方法一:DFS方法二:迭代402. 移掉 K 位数字方法:单调栈 1081. 不同字符的最小子序列 (同 316) 321. 拼接最大数 Leetcode class Solution: def maxNumber(self, nums1, nums2, k): def pick_max(nums, k): stack = [] drop = len(nums) - k for num in nums: while drop and stack and stack[-1] < num: stack.pop() dr
    admin 今天
  • 力扣题解:面试题 02.04. 分割链表
    其他

    力扣题解:面试题 02.04. 分割链表

    给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 示例 1: 输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3,5] 解题思路 当前节点curr curr >= x,继续检查下个节点curr < x curr左边不存在 >= x的节点,继续检查下个节点curr左边存在 >= x的节点,将curr节点移动到链表最前面 代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * }
    admin 今天
  • 每日一题-相对名次
    其他

    每日一题-相对名次

    leetcode-每日一题-相对名次 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 示例 1: 输入:score = [5,4,3,2,1] 输出:["Gold Medal","Si
    admin 今天
  • " alt="Leetcode 题组 31 (二叉搜索树)">
    其他

    Leetcode 题组 31 (二叉搜索树)

    669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。 所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。 示例 1: 输入:root = [1,0,2], low = 1, high = 2 输出:[1,null,2] /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :
    admin 今天
  • 力扣题解:面试题 02.05. 链表求和
    其他

    力扣题解:面试题 02.05. 链表求和

    题目 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 解题思路 模拟 模拟竖式的计算过程每计算一位,生成一个ListNode加入到结果链表中和字符串求和题型类似 代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumber
    admin 今天
  • 【力扣】1446. 连续字符
    其他

    【力扣】1446. 连续字符

    题目: 给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 请你返回字符串的能量。 示例 1: 输入:s = “leetcode” 输出:2 解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。 示例 2: 输入:s = “abbcccddddeeeeedcba” 输出:5 解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。 示例 3: 输入:s = “triplepillooooow” 输出:5 示例 4: 输入:s = “hooraaaaaaaaaaay” 输出:11 示例 5: 输入:s = “tourist” 输出:1 提示: 1 <= s.length <= 500 s 只包含小写英文字母。 答案: class Solution { public int maxPower(String s) {
    admin 今天
  • 力扣题解:面试题 02.03. 删除中间节点
    其他

    力扣题解:面试题 02.03. 删除中间节点

    题目 若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。 例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f 示例: 输入:节点 5 (位于单向链表 4->5->1->9 中) 输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1->9 解题思路 一道抖机灵的题,脑筋急转弯将下一个节点值赋值给当前节点将当前节点的next指针指向下下个节点 代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x)
    admin 今天
  • 【力扣】506. 相对名次
    其他

    【力扣】506. 相对名次

    题目: 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 示例 1: 输入:score = [5,4,3,2,1] 输出:[“Gold Medal”,“Silver Medal”,“Bronze M
    admin 今天
  • 力扣题200岛屿数量
    其他

    力扣题200岛屿数量

    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [   ["1","1","1","1","0"],   ["1","1","0","1","0"],   ["1","1","0","0","0"],   ["0","0","0","0","0"] ] 输出:1 示例 2: 输入:grid = [   ["1","1","0","0","0"],   ["1","1","0","0","0"],   ["0","0","1","0","0"],   ["0","0","0","1","1"] ] 输出:3 1.深度优先遍历。找到一个1后,就进行深度搜索,找到这个1属于的整个岛,并且在找到这个岛后,将该岛的所有1重置为0,避免重复计算。进行了多少次深度优先遍历,就说明有多少个岛。 class Solution { publi
    admin 今天
  • 【leetcode】剑指offer专项突击版详解(C++)
    其他

    【leetcode】剑指offer专项突击版详解(C++)

    题目所在链接: leetcode剑指offer专项突击版 1. 整数 剑指 Offer II 002. 二进制加法 class Solution { public: string addBinary(string a, string b) { int carry = 0; string res; int i = a.size() - 1; int j = b.size() - 1; while(i >= 0 || j>=0){ int digita = i >=0? a[i] - '0':0; int digitb = j >= 0 ? b[j] -'0':0; int sum = digita + digitb + carry;
    admin 今天
  • leetcode 506. 相对名次 python
    其他

    leetcode 506. 相对名次 python

    题目描述:    题解: 1.先将输入score数组按从大到小排列。 2.用一个dict对应每个score和排名。 3.根据dict确定结果,是前三名则输出对应字符串,否则为对应排名的字符串形式。 class Solution(object): def findRelativeRanks(self, score): sortedscore = sorted(score) sortedscore.reverse() scoretorank = {} for i in range(len(sortedscore)): scoretorank[sortedscore[i]]=i+1 answer = [] for i in range(len(score)): if scoretorank[score[i]]==1: answer.append("Gold
    admin 今天
  • 力扣题解:面试题 02.02. 返回倒数第 k 个节点
    其他

    力扣题解:面试题 02.02. 返回倒数第 k 个节点

    题目 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 示例: 输入: 1->2->3->4->5 和 k = 2 输出: 4 说明: 给定的 k 保证是有效的。 解题思路 方法1:快慢指针 快慢指针相差k个节点的距离当快指针到达链表末尾,慢指针指向倒数第k个节点 方法2:2次遍历(不提供代码)第一次遍历计算出链表长度length,第(length-k+1)个节点即为倒数第k个节点第二次遍历,找到第(length-k+1)个节点 代码 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { pu
    admin 今天
  • Leetcode 506 相对名次
    其他

    Leetcode 506 相对名次

    题目 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况: 名次第 1 的运动员获金牌 “Gold Medal” 。 名次第 2 的运动员获银牌 “Silver Medal” 。 名次第 3 的运动员获铜牌 “Bronze Medal” 。 从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。 使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。 解题思路   排序+映射。 代码 class Solution { public String[] findRelativeRa
    admin 今天
  • Leetcode数据结构day1
    其他

    Leetcode数据结构day1

    数据结构入门day1 217. 存在重复元素思路解析方法一 排序方法二 哈希表方法三 set去重 53. 最大子数组和思路解析解法一 暴力法解法二 动态规划优化空间复杂度为O(1) 解法三 贪心法解法四 分治法 217. 存在重复元素 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 思路解析 方法一 排序 在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。因此,我们可以扫描已排序的数组,每次判断相邻的两个元素是否相等,如果相等则说明存在重复的元素。 class Solution { public: bool containsDuplicate(vector& nums) { sort(nums.begin(), nu
    admin 今天