精彩博客

2021-05-08:给定两个非负数组x和hp,长度都是N,再给定一个正数range。x有序,x[i]表示i号怪兽在x轴上的位置;hp[i]表示i号怪兽的血量 。range表示法师如果站在x位置,用A

2021-05-08:给定两个非负数组x和hp,长度都是N,再给定一个正数range。x有序,x[i]表示i号怪兽在x轴上的位置;hp[i]表示i号怪兽的血量 。range表示法师如果站在x位置,用AOE技能打到的范围是: [x-range,x+range],被打到的每只怪兽损失1点血量 。返回要把所有怪兽血量清空,至少需要释放多少次AOE技能? 福大大 答案2021-05-08: 1.贪心策略:永远让最左边缘以最优的方式(AOE尽可能往右扩,最让最左边缘盖住目前怪的最左)变成...

2021/05/08 23:21
28
0
2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少?

2021-05-07:给定一个数组arr,你可以在每个数字之前决定+或者-,但是必须所有数字都参与 ,再给定一个数target,请问最后算出target的方法数是多少? 福大大 答案2021-05-07: 优化点一 : 你可以认为arr中都是非负数 因为即便是arr中有负数,比如[3,-4,2] 因为你能在每个数前面用+或者-号 所以[3,-4,2]其实和[3,4,2]达成一样的效果 那么我们就全把arr变成非负数,不会影响结果的 优化点二 : 如果arr都是非负数,并且所有数的累...

2021/05/07 22:08
21
0
2021-05-06:给定一个二维数组matrix, 你可以从任何位置出发,走向上下左右四个方向 。返回能走出来的最长的递增链长度。

2021-05-06:给定一个二维数组matrix, 你可以从任何位置出发,走向上下左右四个方向 。返回能走出来的最长的递增链长度。 福大大 答案2021-05-06: 自然智慧即可。 动态规划。二维数组的所有位置,每个位置上下左右全部试一次。 代码用golang编写。代码如下: package main import "fmt" func main() { matrix := [][]int{ { 1, 2, 3}, { 6, 5, 4}} ret := 0 ret = longestIncreasingPath1(matri...

2021/05/06 22:39
63
0
2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得a*a+b*b=c。【举例】c=5时,返回true。c=4时,返回true。c=3时,返回false。

2021-05-04:给定一个非负整数c,你要判断是否存在两个整数a和b,使得aa+bb=c。【举例】c=5时,返回true。c=4时,返回true。c=3时,返回false。 福大大 答案2021-05-04: 四平方和定理。时间复杂度:O(sqrt(N))。空间复杂度:O(1)。 1.n一直除以4,直到不能整除为止。 2.n%8,如果余7,直接返回4。 3.从1到sqrt(n)开始循环,aa+bb=c成立时,a和b都不为0,返回2;a和b有一个为0,返回1。 4.返回3。 5.在本题中,返回值是1和2的是t...

2021/05/04 22:07
194
0
2021-05-03:给定一个非负整数num, 如何不用循环语句, 返回>=num,并且离num最近的,2的某次方 。

2021-05-03:给定一个非负整数num, 如何不用循环语句, 返回>=num,并且离num最近的,2的某次方 。 福大大 答案2021-05-03: 32位整数,N=32。 1.非负整数用int表示。时间复杂度是logN。 整数减一后的二进制形式,1右边的数字全部变成1,最后加1就是需要返回的结果。 2.非负整数用float64表示。浮点数隐含用到了log(整数)的结果,所以复杂度是O(1)。这种方法有点偷奸耍滑了,因为题目里是整数,而这里是用float64,并不是整数,...

2021/05/03 21:50
51
0
2021-05-02:给定一个文件目录的路径,写一个函数统计这个目录下所有的文件数量并返回。隐藏文件也算,但是文件夹不算 。

2021-05-02:给定一个文件目录的路径,写一个函数统计这个目录下所有的文件数量并返回。隐藏文件也算,但是文件夹不算 。 福大大 答案2021-05-02: 1.用filepath.Walk方法。 2.用广度优先遍历+ioutil。 代码用golang编写。代码如下: package main import ( "container/list" "fmt" "io/ioutil" "os" "path/filepath" "strings" ) func main() { ret := getFileNumber1("D:\\mysetup\\gopath...

2021/05/02 23:06
29
0
2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使

2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使所有的居民点到最近邮局的总距离最短,返回最短的总距离。【举例】arr=[1,2,3,4,5,1000],num=2。第一个邮局建立在 3 位置,第二个邮局建立在 1000 位置。那么 1 位置到邮局的距离 为 2, 2 位置到邮局距离为 1,3 位置到邮局的距离为 0,4...

2021/04/30 23:06
26
0
2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆

2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 L;如果被打爆气球的右边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 R。 获得分数为 LXR。 2)如果被打爆气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 L;如果被打爆气...

2021/04/29 22:56
22
0
2021-04-28:力扣546,移除盒子。给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜

2021-04-28:力扣546,移除盒子。给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k * k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。 福大大 答案2021-04-28: 动态规划。 代码用golang编写。代码如下: package main import ( "fm...

2021/04/28 22:56
20
0
2021-04-27:如果一个字符相邻的位置没有相同字符,那么这个位置的字符出现不能被消掉。比如:“ab“,其中a和b都不能被消掉 。如果一个字符相邻的位置有相同字符,就可以一起消掉。比如:“abbb

2021-04-27:如果一个字符相邻的位置没有相同字符,那么这个位置的字符出现不能被消掉。比如:“ab”,其中a和b都不能被消掉 。如果一个字符相邻的位置有相同字符,就可以一起消掉。比如:“abbbc”,中间一串的b是可以被消掉的, 消除之后剩下“ac”。某些字符如果消掉了,剩下的字符认为重新靠在一起。给定一个字符串,你可以决定每一步消除的顺序,目标是请尽可能多的消掉字符,返回最少的剩余字符数量。比如:“aacca”, 如果...

2021/04/27 22:31
18
0
2021-04-26:整型数组arr长度为n(3 <= n <= 10^4),最初每个数字是<=200的正数且满足如下条件: 1. arr[0] <= arr[1]。2.arr[n-1] <= arr

2021-04-26:整型数组arr长度为n(3 <= n <= 10^4),最初每个数字是<=200的正数且满足如下条件: 1. arr[0] <= arr[1]。2.arr[n-1] <= arr[n-2]。3. arr[i] <= max(arr[i-1], arr[i+1])。但是在arr有些数字丢失了,比如k位置的数字之前是正数, 丢失之后k位置的数字为0。 请你根据上述条件, 计算可能有多少种不同的arr可以满足以上条件。比如 [6,0,9] 只有还原成 [6,9,9]满足全部三个条件,所以返回1种。 福大大 答案2021-04-2...

2021/04/26 23:30
34
0
2021-04-25:给定一个数组arr,和一个正数M,返回在arr的子数组在长度不超过M的情况下,求最大的累加和。

福大大 答案2021-04-25: 前缀和+左大右小的双端队列。时间太晚了,所以写得简单。 代码用golang编写。代码如下: package main import ( "container/list" "fmt" ) func main() { arr := []int{ 1, 2, -3, 4, -5} ret := maxSum(arr, 5) fmt.Println(ret) } // O(N)的解法,最优解 func maxSum(arr []int, M int) int { if len(arr) == 0 || M < 1 { return 0 } N...

2021/04/25 23:44
21
0
2021-04-24:手写代码:拓扑排序。

福大大 答案2021-04-24: 1)在图中找到所有入度为0的点输出。 2)把所有入度为0的点在图中删掉,继续找入度为0的点输出,周而复始。 3)图的所有点都被删除后,依次输出的顺序就是拓扑排序。 要求:有向图且其中没有环。 应用:事件安排、编译顺序。 代码用golang编写。代码如下: package main import "fmt" func main() { matrix := [][]int{ { 0, 1, 1, 0, 0, 0}, { 0, 0, 1, 0, 0, 1...

2021/04/24 21:21
20
0
2021-04-23:TSP问题 有N个城市,任何两个城市之间的都有距离,任何一座城市到自己的距离都为0。所有点到点的距 离都存在一个N*N的二维数组matrix里,也就是整张图由邻接矩阵表示。现要求

2021-04-23:TSP问题 有N个城市,任何两个城市之间的都有距离,任何一座城市到自己的距离都为0。所有点到点的距 离都存在一个N*N的二维数组matrix里,也就是整张图由邻接矩阵表示。现要求一旅行商从k城市 出发必须经过每一个城市且只在一个城市逗留一次,最后回到出发的k城,返回总距离最短的路的 距离。参数给定一个matrix,给定k。 福大大 答案2021-04-23: 动态规划。 代码用golang编写。代码如下: package main import (...

2021/04/23 23:42
37
0
2021-04-22:给定很多线段,每个线段都有两个数[start, end],表示线段开始位置和结束位置,左右都是闭区间,规定:1)线段的开始和结束位置一定都是整数值,2)线段重合区域的长度必须>=

2021-04-22:给定很多线段,每个线段都有两个数[start, end],表示线段开始位置和结束位置,左右都是闭区间,规定:1)线段的开始和结束位置一定都是整数值,2)线段重合区域的长度必须>=1。返回线段最多重合区域中,包含了几条线段 。 福大大 答案2021-04-22: 小根堆。 1.按线段起点排序。 2.遍历线段,push和pop小根堆。 2.1.小根堆循环pop小于等于线段起点的值。 2.2.把线段结束位置push到小根堆中。 2.3.收集最大的小根堆长...

2021/04/22 23:05
43
0
2021-04-21:手写代码:Dijkstra算法。

2021-04-21:手写代码:Dijkstra算法。 福大大 答案2021-04-21: Dijkstra算法是一种基于贪心策略的算法。每次新扩展一个路程最短的点,更新与其相邻的点的路程。时间紧,未完成。 代码用golang编写。代码如下: package main import ( "fmt" "math" ) func main() { fmt.Println("") } func dijkstra1(from *Node) map[*Node]int { distanceMap := make(map[*Node]int) distanceMap[from] = 0 ...

2021/04/21 23:36
3
0
2021-04-20:手写代码:最小生成树算法之Prim。

2021-04-20:手写代码:最小生成树算法之Prim。 福大大 答案2021-04-20: 解锁点,解锁边,解锁点,解锁边,一直解锁下去。 代码用golang编写。代码如下: package main import ( "fmt" "math" ) func main() { graph := [][]int{ { 0, 11, 55}, { math.MaxInt32, 0, 22}, { math.MaxInt32, math.MaxInt32, 0}} ret := prim(graph) fmt.Println(ret) } // 请保...

2021/04/20 23:33
20
0
2021-04-19:手写代码:最小生成树算法之Kruskal。

2021-04-19:手写代码:最小生成树算法之Kruskal。 福大大 答案2021-04-19: 并查集。边从小到大,找最小边,无环。 代码用golang编写。代码如下: package main import ( "fmt" "sort" ) func main() { graph := &Graph{ } graph.nodes = make(map[int]*Node) graph.nodes[0] = &Node{ } graph.nodes[1] = &Node{ } graph.nodes[2] = &Node{ } graph.edges = make(map[*E...

2021/04/19 23:19
989
0
2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上、下、左、右相邻的1认为是一片岛,返回matrix中岛的数量。

2021-04-18:给定一个二维数组matrix,里面的值不是1就是0,上、下、左、右相邻的1认为是一片岛,返回matrix中岛的数量。 福大大 答案2021-04-18: 并查集。 代码用golang编写。代码如下: package main import "fmt" func main() { arr := [][]byte{ { 49, 49, 49, 49, 48}, { 49, 49, 48, 49, 48}, { 49, 49, 48, 49, 48}, { 49, 49, 48, 48, 48}, { ...

2021/04/18 22:53
515
0
2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请

2021-04-17:给定一个整型数组 arr,数组中的每个值都为正数,表示完成一幅画作需要的时间,再 给定 一个整数 num,表示画匠的数量,每个画匠只能画连在一起的画作。所有的画家 并行工作,请 返回完成所有的画作需要的最少时间。【举例】arr=[3,1,4],num=2。最好的分配方式为第一个画匠画 3 和 1,所需时间为 4。第二个画匠画 4,所需时间 为 4。 因为并行工作,所以最少时间为 4。如果分配方式为第一个画匠画 3,所需时 间为 ...

2021/04/17 22:58
916
0

没有更多内容

加载失败,请刷新页面

刚哥谈架构(七)- 为你的应用选择合适的API

架构师的主要活动是做出正确的技术决策。选择何使得API是一项重要的技术决策。那么今天就看看API的选择问题。 应用程序编程接口(API)是一种计算接口,它定义了多个软件中介之间的交互。它定...

2020/06/17 08:04
3W
4
领域驱动设计(DDD)实践之路(二):事件驱动与CQRS

本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/Z3uJhxJGDif3qN5OlE_woA 作者:wenbo zhang 【领域驱动设计实践之路】系列往期精彩文章: 《领域驱动设计(DDD)实践...

2020/04/13 10:44
4.2W
6
我眼中的分布式系统可观测性

作者:黄东旭,PingCAP 联合创始人兼 CTO 位于 M87 中心的特大质量黑洞示意图(© EHT Collaboration) 今天的文章我想从这张模糊的照片说起。 相信很多小伙伴对这张照片并不陌生,这是去年人...

2020/02/22 17:43
1.9W
7
PingCAP 的 5 年远程办公实践

前言 2020 年的春节注定是一个不平凡的春节,全国都在抗击新型冠状病毒肺炎。除了不出门,勤洗手,戴口罩之类的常规操作,我们就在想,在这个大背景下,我们还能够做哪些事情?考虑到春节假期...

2020/01/28 12:13
5.3W
17
探讨 Git 代码托管平台的若干问题 - 2019 版

关于 Git 版本控制软件种类繁多,维基百科收录的最早的版本控制系统是 1972 年贝尔实验室开发的 Source Code Control System。1986 年 Concurrent Versions System(CVS) 诞生,CVS 曾非常流行...

2019/12/19 17:51
2.2W
15
测试驱动开发(TDD)入门

测试驱动开发(TDD)入门 测试驱动开发,英文全称 Test-Driven Development(简称 TDD),是由Kent Beck 先生在极限编程(XP)中倡导的开发方法。以其倡导先写测试程序,然后编码实现其功能得...

2019/09/19 10:37
8.9K
3
初学者也说TARS

作为一个应届毕业生,进入阅文集团,加入到通用平台中心之后,随着日常工作的逐步深入,我渐渐了解阅文的技术体系,其中尤其以腾讯TARS平台最为重要。目前TARS平台承载了阅文内部绝大多数的服...

2019/07/25 15:57
9.8K
3
如何同步多个 git 远程仓库

搬家了 -> 如何同步多个 git 远程仓库

2019/07/12 10:45
9.7K
11
实践DDD领域驱动设计

说明 领域驱动设计最近又火了。概念不断被提及,但是相信对于像笔者一样的很多开发者对于其如何应用都一头雾水。 正如《实现领域驱动设计》中作者提到的不同公司的业务能力开发能力和成熟度不...

2019/07/05 10:35
5.9W
8
实现 Git 目录权限控制

前言 Git 与 Subversion 有诸多不同,最核心的一点是前者属于分布式版本控制工具,后者属于集中式版本控制工具。前者的提交行为是离线的,本地的,后者的提交是在线的,需要与远程中央服务器...

2019/04/18 10:19
9.8K
6
Fescar分布式事务实现原理解析探秘

前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fescar发布一个月左右便受到了近5000个star足以说明其热度。当然,在fescar出来之前,已经有比较成熟的分布式事务的解决方案...

2019/02/18 16:37
3.1W
21
大前端时代即将来临,后端该何去何从?

缘起 “天下大事,合久必分,分久必合” 一直以来,前端都是“切图师”,仅有“特效师”一脉堪称翘楚。 大家就这样安安分分过了几年,前端一直是js的天地,直到08年的一天,node.js 横空出世...

2018/12/21 02:06
2.5W
8
高并发架构系列:Redis缓存和MySQL数据一致性方案详解

需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 这个业务场景...

2018/12/19 14:07
30.3W
48
浅谈如何提高自动化测试的稳定性和可维护性 (pytest&allure)

装饰器与出错重试机制 谈到稳定性,不得不说的就是“出错重试”机制了,在自动化测试中,由于环境一般都是测试环境,经常会有各种各种的抽风情况影响测试结果,这样就为测试的稳定性带来了挑...

2018/11/23 10:21
7.9K
0
Web API 持续集成:PostMan+Newman+Jenkins(图文讲解)

本文由葡萄城技术团队于OSChina原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 上篇文章我们已经完成了API测试工具选型,接下来是...

2018/10/31 15:55
2.9W
9
为什么前后端分离了,你比从前更痛苦?

你有没有遇到过: 前端代码刚写完,后端的接口又变了。 接口文档永远都是不对的。 测试工作永远只能临近上线才能开始。 为什么前后端分离了,你比从前更痛苦?   前后端分离早已经不是新闻...

2018/10/16 09:01
2.4W
21
关于“编程的本质”的探讨

提出问题 如果你去面试,被大公司工作20年的资深技术总监问一个问题“说说你对软件工程的理解”,你会怎么回答呢?是不是会像我一样一脸懵逼,一个问题就让人回到了小学。没有经年的编程和架...

2018/08/31 14:27
8.7K
15
透明加密系统设计及实现-绪论

随着信息时代的到来,计算机成为了人们日常生活的必备之物。大量的桌面计算机和移动终端设备给人们带来了极大的方便,但是也增加的个人的机密信息泄密的可能性。特别是对于机密部门的机密资料...

2018/08/13 23:10
7.4K
7
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

2018/07/21 23:22
9.1K
10
java 通过网络唤醒实现远程开机

1. 在BIOS设置支持网络唤醒 本文已转到个人博客网站 http://freebytes.net/it/java/wakeonlan.html 大多数集成网卡都能实现网络唤醒功能,不过需要事先进入BIOS中开启网络唤醒功能,不同主板...

2018/01/25 17:24
1.5W
12

没有更多内容

加载失败,请刷新页面

返回顶部
顶部