自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 LeetCode题目大全

LeetCode

2020-08-17 09:17:42 352

原创 OSI七层模型

协议: 为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。OSI 五层模型 分层设计的意义: 通信服务层的模块设计可相对独立于具体的通信线路和通信硬件接口的差别而简化通信服务层模块设计又可相对独立于具体用户应用要求的不同 简化了相关的网络操作,提供了不同厂商之间的兼容性 促进了标准化工作,结构上进行了分层,易于学习和操作 各个...

2020-08-28 18:24:53 201

原创 LeetCode 1537. 最大得分

题目链接:LeetCode 1537. 最大得分题意: 你有两个有序且数组内元素互不相同的数组nums1和nums2。一条合法路径定义如下:选择数组 nums1 或者 nums2 开始遍历(从下标 0 处开始)。 从左到右遍历当前数组。 如果你遇到了nums1和nums2中都存在的值,那么你可以切换路径到另一个数组对应数字处继续遍历(但在合法路径中重复数字只会被统计一次)。得分定义为合法路径中不同数字的和。请你返回所有可能合法路径中的最大得分。由于答...

2020-08-28 13:28:41 215

原创 LeetCode 1536. 排布二进制网格的最少交换次数

题目链接:LeetCode 1536. 排布二进制网格的最少交换次数题意: 给你一个nx n的二进制网格grid,每一次操作中,你可以选择网格的相邻两行进行交换。一个符合要求的网格需要满足主对角线以上的格子全部都是 0。请你返回使网格满足要求的最少操作次数,如果无法使网格符合要求,请你返回 -1。主对角线指的是从(1, 1)到(n, n)的这些格子。解题思路: 首先将每行从后往前遍历,找零的个数,放置在数组中如果满足那一行,就...

2020-08-28 13:23:40 122

原创 LeetCode 1535. 找出数组游戏的赢家

题目链接:LeetCode 1535. 找出数组游戏的赢家题意: 你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。返回赢得比赛的整数。题目数据 保证 游戏存在赢家。解题思路:复杂度O(n...

2020-08-28 11:49:05 135

原创 LeetCode 1534. 统计好三元组

题目链接:LeetCode 1534. 统计好三元组题意: 给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。 0 <= i < j < k <arr.length | arr[i] - arr[j] | <= a | arr[j] - arr[k] | <= b ...

2020-08-28 11:30:25 225

原创 LeetCode 332. 重新安排行程

题目链接:LeetCode 332. 重新安排行程题意: 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。说明:如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 ["JFK", "LGA"] 与 ["JFK", "LGB"] 相比就更小,排序更靠前所有的机场都用三个大写字母表示(机场代码..

2020-08-28 08:28:21 112 1

原创 LeetCode 657. 机器人能否返回原点

题目链接:LeetCode 657. 机器人能否返回原点题意: 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在(0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移...

2020-08-28 08:24:42 160

原创 十大排序之堆排序

堆排序 : 详情点击<?phpfunction heapSort($a){ $n = count($a); if($n < 2) { return $a; } for($i = intval($n/2)-1; $i >= 0; $i--) { downAdjust($a, $i, $n); } for($i = $n-1; $i > 0; $i--) { $t = $a[$i]; $a[$i] = $a[0]; $a[0] = $t;

2020-08-27 19:21:48 113

原创 十大排序之基数排序

基数排序先根据个位数排序,然后十位,然后.....<?phpfunction bucketSort($a){ $max = max($a); $loop = strlen($max); for($i = 1; $i <= $loop; $i++) { R_Sort($a, $i); } return $a;}function R_Sort(array &$arr,$loop){ $tempArr = arr.

2020-08-27 13:45:13 91

原创 十大排序之桶排序

相比较计数排序,桶排序是将某个区间的数分配在一个桶中,而不是一个数一个桶然后对桶内的元素进行排序(此处我采用插入排序)最后输出就行<?phpfunction bucketSort($a){ $len = count($a); $ans = array(); for($i = 0; $i < $len; $i++) { $b = intval($a[$i] / 10); if(!isset($ans[$b])) {

2020-08-27 10:45:03 126

原创 codeforces 1400 D. Zigzags

题目链接:codeforces 1400 D. Zigzags题意:给定一个长度为n的序列a(n≤3000,ai≤n),求有多少个四元组(i,j,k,l) 满足:1 ≤ i < j < k < l ≤n a[i] = a[k] 且a[j] = a[l]解题思路: 4层for循环跑必然超时,所以需要优化,跑两层for循环,使用前缀和记录当前数字在 当前位置之前出现多少次具体为什么:点击查看#include <bits/stdc++.h...

2020-08-26 17:42:43 349

原创 codeforces 1400 B. RPG Protagonist

题目链接:codeforces 1400 B. RPG Protagonist 题意: 给出 p, f, cnts, cntw, s, w,有4个未知数,x1, y1, x2, y2,要求为: x1 * s + y1 * w <= p x2 * s + y2 * w <= f x1 + x2 <= cnts ...

2020-08-26 17:36:15 205

原创 codeforces 1400 C. Binary String Reconstruction

题目链接:codeforces 1400 C. Binary String Reconstruction题意: 给一个二进制字符串 w ,一个变量 x ,规则为if the characterwi−x exists and is equal to1, thensisiis1(formally, ifi>x and wi−x=1, thensi=si=1); if the characterwi+x exists and is equal to1, then...

2020-08-26 16:03:29 268 1

原创 codeforces 1400A. String Similarity

题目链接:codeforces 1400A. String Similarity题意: 如果一个字符串 s 和另一个字符串 t 长度相同,某个位置对应相等,那么定义这两个字符串 相似。10010and01111aresimilar(they have the same character in position4); 10010and11111aresimilar; 111and111aresimilar; 0110and1001are notsim...

2020-08-26 15:07:21 178

原创 LeetCode 17. 电话号码的字母组合

题目链接:LeetCode 17. 电话号码的字母组合题意: 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解题思路: 使用深度优先搜索或者广度优先搜索都可以我是用广度优先搜索class Solution { /** * @param String $digits * @return String[] */ function ...

2020-08-26 14:50:09 150

原创 LeetCode 1562. 查找大小为 M 的最新分组

题目链接LeetCode 1562. 查找大小为 M 的最新分组题意: 给你一个数组arr,该数组表示一个从1到n的数字排列。有一个长度为n的二进制字符串,该字符串上的所有位最初都设置为0。在从1到n的每个步骤i中(假设二进制字符串和arr都是从1开始索引的情况下),二进制字符串上位于位置arr[i]的位将会设为1。给你一个整数m,请你找出二进制字符串上存在长度为m的一组1的最后步骤。一组1是一个连续的、由1...

2020-08-25 21:42:54 196

原创 LeetCode 1559. 二维网格图中探测环

题目链接:LeetCode 1559. 二维网格图中探测环题意: 给你一个二维字符网格数组grid,大小为m x n,你需要检查grid中是否存在 相同值 形成的环。一个环是一条开始和结束于同一个格子的长度 大于等于 4的路径。对于一个给定的格子,你可以移动到它上、下、左、右四个方向相邻的格子之一,可以移动的前提是这两个格子有 相同的值。同时,你也不能回到上一次移动时所在的格子。比方说,环(1, 1) -> (1, 2) -> (1, 1)是不合法...

2020-08-25 00:16:31 323

原创 LeetCode 684. 冗余连接

题目链接:LeetCode 684. 冗余连接题意: 在本问题中, 树指的是一个连通且无环的无向图。输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, ..., N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。每一个边的元素是一对[u, v],满足u < v,表示连接顶点u和v的无向图的边。返回一条可以删去的边,使得结果图是一个有着N个节点的树。如果有多个答案,则返回二维数组中最...

2020-08-24 23:00:11 135

原创 LeetCode 1563. 石子游戏 V

题目链接:LeetCode 1563. 石子游戏 V题意: 几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。游戏中的每一轮:Alice 会将这行石子分成两个 非空行(即,左侧行和右侧行);Bob 负责计算每一行的值,即此行中所有石子的值的总和。Bob 会丢弃值最大的行,Alice 的得分为剩下那行的值(每轮累加)。如果两行的值相等,Bob 让 Alice 决定丢弃哪一行。下一轮从剩下的那一行开始。只 剩下一块石子 时,游戏结束。Ali...

2020-08-24 18:17:14 370

原创 LeetCode 1547. 切棍子的最小成本

题目链接:LeetCode 1547. 切棍子的最小成本题意: 有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。例如,长度为 6 的棍子可以标记如下:给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置。你可以按顺序完成切割,也可以根据需要更改切割的顺序。每次切割的成本都是当前要切割的棍子的长度,切棍子的总成本是历次切割成本的总和。对棍子进行切割将会把一根木棍分成两根较小的木棍(这两根木棍的长度和就是切割前木棍的长度)。请参阅第一个示例以..

2020-08-24 10:52:04 531

原创 LeetCode 1558. 得到目标数组的最少函数调用次数

题目链接:LeetCode 5481. 得到目标数组的最少函数调用次数题意: 给你一个与 nums大小相同且初始值全为 0 的数组 arr ,请你调用以上函数得到整数数组 nums。请你返回将 arr变成 nums的最少函数调用次数。答案保证在 32 位有符号整数以内。解题思路:分析:要么给某个数 +1 , 要么给所有数 ×2,算一次操作每个数(除了0)都要先加1,乘2才会有结果,如果往上变大,乘2会是最快的,分析出当自己本身为奇数时,需要自己额外加1,...

2020-08-23 09:32:23 206

原创 LeetCode 1557. 可以到达所有点的最少点数目

题目链接:LeetCode 5480. 可以到达所有点的最少点数目题意: 给你一个 有向无环图, n个节点编号为 0到 n-1,以及一个边数组 edges,其中 edges[i] = [fromi, toi]表示一条从点fromi到点toi的有向边。找到最小的点集使得从这些点出发能到达图中所有点。题目保证解存在且唯一。你可以以任意顺序返回这些节点编号输入:n = 6, edges = [[0,1],[0,2],[2,5],[3,4],[4,2]]输出:[...

2020-08-23 09:22:52 327

原创 LeetCode 1556. 千位分隔数

题目链接:leetCode 5479. 千位分隔数题意:给你一个整数n,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。输入:n = 1234输出:"1.234"输入:n = 123456789输出:"123.456.789"输入:n = 987输出:"987"解题思路: 直接模拟class Solution { /** * @param Integer $n * @return String...

2020-08-23 09:09:45 260

原创 codeforces 1401 C. Mere Array

题目链接:codeforces 1401 C. Mere Array题意: 给出一个数组,当只有 a[i] 和 a[j] 的最大公倍数 等于 数组中最小值的时候,两个数才可以交换。问最终能否交换成一个递增序列。解题思路: 设最小元素为m,对于所有的m的倍数,m可以与这些元素互换而这些元素之间也可以借助m完成互换所有对与不是m的倍数的数,看排个序后是否还是一样#include <bits/stdc++.h>using namesp...

2020-08-22 09:09:19 253

原创 codeforces 1401 B. Ternary Sequence

题目链接 :codeforces 1401 B. Ternary Sequence题意: 给出两个队列,A和B,只包含 0, 1, 2三个元素,可以对 A 和 B随意排序求队列C的最大和,队列C满足 如果 Ai > Bi Ci = Ai * Bi 如果Ai = Bi Ci = 0 如果Ai < Bi Ci = -Ai * Bi解题思路 要求C的最大和,那么一定是 尽量多 使用 A 中的2 和B...

2020-08-22 08:43:53 239

原创 codeforces 1401 A. Distance and Axis

记录:好久不写,真的是没有codeforces题的思维了,每次隔好久不写,感觉像个麻瓜。题意: 给一个X轴方向的坐标,然后给一点 A 的坐标,给出一个K,要求一点 B存在 于X轴上,满足 |(B-O)-(A-B)| = k,问A点最少向左或向右移多少距离n = 4, k = 0, 那么B只要在(0,2)位置,A点就可以不移动解题思路: 如果 K 大于 n, 那么表示 B点一定在A点 右侧,公式转换为 B - (B - A) = k A = K,所以只需将A点移...

2020-08-22 08:24:19 252

原创 十大排序之计数排序

计数排序,统计每个数出现的次数<?php$a = array(2,13,20,7,5,2,6,5,8,7,6,6,5,5,4,6,8,3);function countSort($a) { $len = count($a); $t = $arr = array(); for($i = 0; $i < $len; $i++) { if(isset($t[$a[$i]])){ $t[$a[$i]]++; } e

2020-08-21 16:51:40 86

原创 十大排序之快速排序

快速排序<?php$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);function quickSort($a) { $len = count($a); if($len < 2) { return $a; } $left = $right = array(); $m = $a[0]; for($i = 1; $i < $len; $i++) { if(

2020-08-21 15:46:54 118

原创 十大排序之归并排序

归并排序:归并思想<?phpclass Solution { function mergeSort(&$arr, $start, $end) { if($start >= $end) { return ; } $mid = intval(($start + $end) / 2); $this->mergeSort($arr, $start, $mid); $.

2020-08-21 11:46:48 85

原创 十大排序之希尔排序

希尔排序改进版的插入排序思想理解注意:分组后,不是先将一组排序完成再排下一组,而是按照初始数组顺序代码 <?phpclass Solution { function shellSort($arr) { $len = count($arr); for($gap = $len >>2 ; $gap > 0; $gap = intval($gap/2)) { for($i = $gap; ...

2020-08-21 09:18:56 100

原创 LeetCode 111. 二叉树的最小深度

题目链接:LeetCode 111. 二叉树的最小深度题意: 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。解题思路: 使用BFS查看层次/** * Definition for a binary tree node. * class TreeNode { * public $val = null; * public $left = null; * publ...

2020-08-21 08:12:11 135 1

原创 LeetCode 1552. 两球之间的磁力

题目链接:LeetCode 1552. 两球之间的磁力题意: 在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有n个空的篮子,第i个篮子的位置在position[i],Morty想把m个球放到这些篮子里,使得任意两球间最小磁力最大。已知两个球如果分别位于x和y,那么它们之间的磁力为|x - y|。给你一个整数数组position和一个整数m,请你返回最大化的最小磁力...

2020-08-20 22:29:50 257 1

原创 LeetCode 1551. 使数组中所有元素相等的最小操作数

题目链接:1551. 使数组中所有元素相等的最小操作数题意: 存在一个长度为 n 的数组 arr ,其中 arr[i] = (2 * i) + 1 ( 0 <= i < n )。一次操作中,你可以选出两个下标,记作 x 和 y ( 0 <= x, y < n )并使 arr[x] 减去 1 、arr[y] 加上 1 (即 arr[x] -=1 且 arr[y] += 1 )。最终的目标是使数组中的所有元素都 相等 。题目测试用例将会 保证 :在执行若干步操作后,...

2020-08-20 22:20:17 528

原创 LeetCode 1550. 存在连续三个奇数的数组

题目链接:LeetCode 1550. 存在连续三个奇数的数组题意: 给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false。解题思路: 直接判断就好,注意下边界class Solution { /** * @param Integer[] $arr * @return Boolean */ function threeConsecutiveOdds($ar...

2020-08-20 22:10:48 213

原创 十大排序之插入排序

插入排序: 将未排序的元素依次插入到排好序的队列里。(从后往前插)<?phpclass Solution { function mySort($arr){ $len = count($arr); for($i = 0; $i < $len - 1; $i++){ if($arr[$i+1] < $arr[$i]){ $t = $arr[$i+1]; // 将最小的取出.

2020-08-18 07:34:15 124

原创 十大排序之选择排序

选择排序: 顾名思义,就是选择最大或者最小的元素,依次排放<?phpclass Solution { function mySort($arr){ $len = count($arr); for($i = 0; $i < $len - 1; $i++){ $k = $i; $min = $arr[$i]; // 定义未排序的最小元素 for($j = $i + 1; ..

2020-08-18 06:45:02 83

原创 十大排序之冒泡排序

简单排序算法核心思想是将相邻的两个元素在顺序不同的时候交换位置<?phpclass Solution { function mySort($arr){ $len = count($arr); for($i = 0; $i < $len - 1; $i++){ for($j = 0; $j < $len - 1; $j++){ if($arr[$j] > $arr[$j+1]){

2020-08-18 06:24:42 101

原创 LeetCode 1541. 平衡括号字符串的最少插入次数

题目链接:LeetCode 1541. 平衡括号字符串的最少插入次数题意: 给你一个括号字符串s,它只包含字符'(' 和')'。一个括号字符串被称为平衡的当它满足:任何左括号'('必须对应两个连续的右括号'))'。左括号'('必须在对应的连续两个右括号'))'之前。比方说"())","())(())))" 和"(())())))"都是平衡的,")()","()))" 和"(()))"都是不平衡的。你可以在任意位置插入字符 '(' 和 ')' ...

2020-08-17 15:56:04 545

原创 LeetCode 1540. K 次操作转变字符串

题目链接:LeetCode 1540. K 次操作转变字符串题意: 给你两个字符串s和t,你的目标是在 k次操作以内把字符串s转变成t。在第 i次操作时(1 <= i <= k),你可以选择进行如下操作:选择字符串 s中满足 1 <= j <= s.length且之前未被选过的任意下标 j(下标从 1 开始),并将此位置的字符切换 i次。不进行任何操作。切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,...

2020-08-17 15:50:45 503

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除