亚历克斯

常用接口分类与模块设计的方法

那年仲夏 提交于 2020-03-16 08:28:07
在「 怎样做个无敌的程序员 」中聊到, 除编程能力之外,程序员还要掌握销售能力 。不管是推销自我,还是打造影响力,都离不开公众表达,特别是在行业峰会上侃侃而谈的演讲。公众演讲是程序员普遍不熟悉的领域,它曾经也是老兵哥的短板,教主乔布斯和罗永浩老师的发布会演讲是我的最爱。 有人做过这样一份调查:人们平时最害怕的十件事情,其中排第一的是公众演讲,第二才是死亡,我非常认同这个调查结果。原本我想分享自己超越死亡恐惧的经历,但我现在有个更震撼的,接下来给大家讲讲这个真实的故事。 春节宅在家里读书,偶尔看部电影放松,其中有部纪录片《徒手攀岩》却让人越看越紧张。影片主角是美国攀岩大师亚历克斯·霍诺德(Alex Honnold),该片记录他在 2017 年 6 月 3 日无辅助徒手攻克美国优胜美地国家公园酋长岩的过程,岩石高度近 3000 英尺(即 914 米左右),登顶耗时 3 小时 56 分。观影时我始终处于身心紧张的状态,手心脚心直冒冷汗。 酋长岩跟地平面几乎成九十度角,大部分岩壁都是光整的大平板,可供抓握的岩点非常少,难度之大超乎想象,在亚历克斯之前还没有人尝试过徒手攀。徒手攀岩是不借助任何器械的,仅凭手脚跟岩壁的摩擦力,稍有不慎就会坠落山崖,非死即伤。岩点断裂、潮湿打滑、鸟虫干扰、高空落石、天气突变等,攀登过程充满了不可控因素,任何意外的发生都会让攀岩者丧失生命。 对亚历克斯来说

Leetcode849.Maximize Distance to Closest Person到最近的人的最大距离

只愿长相守 提交于 2020-02-08 09:18:42
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。 至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。 返回他到离他最近的人的最大距离。 示例 1: 输入:[1,0,0,0,1,0,1] 输出:2 解释: 如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。 如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1 。 因此,他到离他最近的人的最大距离是 2 。 示例 2: 输入:[1,0,0,0] 输出:3 解释: 如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。 这是可能的最大距离,所以答案是 3 。 提示: 1 <= seats.length <= 20000 seats 中只含有 0 和 1,至少有一个 0,且至少有一个 1。 class Solution { public: int maxDistToClosest(vector<int>& seats) { int len = seats.size(); if(len <= 1) return 0; int MAX = 0; if(seats[0] == 0) { int cnt = 0; for(int i = 0; i < len; i++) { if(seats[i] ==

Leetcode849.Maximize Distance to Closest Person到最近的人的最大距离

你离开我真会死。 提交于 2020-02-08 07:23:15
在一排座位( seats)中,1 代表有人坐在座位上,0 代表座位上是空的。 至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。 返回他到离他最近的人的最大距离。 示例 1: 输入:[1,0,0,0,1,0,1] 输出:2 解释: 如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。 如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1 。 因此,他到离他最近的人的最大距离是 2 。 示例 2: 输入:[1,0,0,0] 输出:3 解释: 如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。 这是可能的最大距离,所以答案是 3 。 提示: 1 <= seats.length <= 20000 seats 中只含有 0 和 1,至少有一个 0,且至少有一个 1。 class Solution { public: int maxDistToClosest(vector<int>& seats) { int len = seats.size(); if(len <= 1) return 0; int MAX = 0; if(seats[0] == 0) { int cnt = 0; for(int i = 0; i < len; i++) { if(seats[i] ==

849. Maximize Distance to Closest Person

强颜欢笑 提交于 2020-01-19 04:46:46
849. 到最近的人的最大距离 在一排座位( seats )中, 1 代表有人坐在座位上, 0 代表座位上是空的。 至少有一个空座位,且至少有一人坐在座位上。 亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。 返回他到离他最近的人的最大距离。 示例 1: 输入:[1,0,0,0,1,0,1] 输出:2 解释: 如果亚历克斯坐在第二个空位(seats[2])上,他到离他最近的人的距离为 2 。 如果亚历克斯坐在其它任何一个空位上,他到离他最近的人的距离为 1 。 因此,他到离他最近的人的最大距离是 2 。 示例 2: 输入:[1,0,0,0] 输出:3 解释: 如果亚历克斯坐在最后一个座位上,他离最近的人有 3 个座位远。 这是可能的最大距离,所以答案是 3 。 提示: 1 <= seats.length <= 20000 seats 中只含有 0 和 1,至少有一个 0 ,且至少有一个 1 。 解法一 //时产复杂度O(n), 空间复杂度O(n) class Solution { public: int maxDistToClosest(vector<int>& seats) { int n = seats.size(); vector<int> rec; for(int i = 0; i < n; i++) { if(seats[i]) rec.push

面试技巧:把握好这一点将对你的面试至关重要

倖福魔咒の 提交于 2019-12-19 19:50:23
亚历克斯有一个令人印象深刻的简历,他在学校取得了优异的成绩,一系列获得认可的技术项目,以及前两份工作的具体成果。然而,当他在一家新的高科技创业公司面试时,该公司拒绝了他。幸运的是,对于亚历克斯来说,他从一个非正式的渠道得到了消息:得知他被拒绝的理由,原来是因为面试官认为亚历克斯缺乏激情,觉得他很安静,没有具体说明他是如何在他负责的项目做出贡献的,也没有表现出面试官想要看到的候选人应有的热情。 亚历克斯在香港长大,在那里他被教导要看淡自己的成就。不幸的是,他面试的公司在美国,美国的面试官有一个根深蒂固的思维:他们相信热情的候选人会大声谈论他们的成就。其实表现出热情情并不是判断求职者是否优秀的的唯一标准,但很多面试官都在他们的面试过程中看中这一点。若想要在接下来的面试中取得成功,您需要弄清楚如何变现热情,如何传达最重要的事情。 谈论你做事的目的 大多数简历和面试只是简单的说明一系列的事情(我做了什么事情),然而却忽略了说明“为什么”,也就是需要解释你做事的目标以及你是如何完成的。亚历克斯曾经做出来的东西被客户抱怨没有人性化,这种辛辛苦苦做出来的东西却不被认可,这是亚历克斯不能接受的。于是他之后的项目多次和客户沟通,了解客户每个需求的目的,了解客户的用户是怎样的,提出自己的疑问和建议,最终后面的项目越来越成功,获得多个客户的好评。 你是如何努力的 对于大多数职位,合适的候选人应该是聪明的

Leetcode之动态规划(DP)专题-877. 石子游戏(Stone Game)

匿名 (未验证) 提交于 2019-12-02 23:57:01
Leetcode之动态规划(DP)专题-877. 石子游戏(Stone Game) piles[i] 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 true false 示例: 输入:[5,3,4,5] 输出:true 解释: 亚历克斯先开始,只能拿前 5 颗或后 5 颗石子 。 假设他取了前 5 颗,这一行就变成了 [3,4,5] 。 如果李拿走前 3 颗,那么剩下的是 [4,5],亚历克斯拿走后 5 颗赢得 10 分。 如果李拿走后 5 颗,那么剩下的是 [3,4],亚历克斯拿走后 4 颗赢得 9 分。 这表明,取前 5 颗石子对亚历克斯来说是一个胜利的举动,所以我们返回 true 。 提示: 2 <= piles.length <= 500 piles.length 1 <= piles[i] <= 500 sum(piles) 数学题,但我们用DP来求解这一题。 我们首先定义一个类,名为P: private static class P { int fir, sec; P(int fir, int sec) { this.fir = fir; this.sec = sec; } } P中有两个属性

Leetcode之动态规划(DP)专题-877. 石子游戏(Stone Game)

天大地大妈咪最大 提交于 2019-11-29 07:31:30
Leetcode之动态规划(DP)专题-877. 石子游戏(Stone Game) 亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。 示例: 输入:[5,3,4,5] 输出:true 解释: 亚历克斯先开始,只能拿前 5 颗或后 5 颗石子 。 假设他取了前 5 颗,这一行就变成了 [3,4,5] 。 如果李拿走前 3 颗,那么剩下的是 [4,5],亚历克斯拿走后 5 颗赢得 10 分。 如果李拿走后 5 颗,那么剩下的是 [3,4],亚历克斯拿走后 4 颗赢得 9 分。 这表明,取前 5 颗石子对亚历克斯来说是一个胜利的举动,所以我们返回 true 。 提示: 2 <= piles.length <= 500 piles.length 是偶数。 1 <= piles[i] <= 500 sum(piles) 是奇数。 数学题,但我们用DP来求解这一题。 我们首先定义一个类,名为P: private

leetcode 877. 石子游戏

血红的双手。 提交于 2019-11-27 13:21:27
题目描述: 亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。 假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。 示例: 输入:[5,3,4,5] 输出:true 解释: 亚历克斯先开始,只能拿前 5 颗或后 5 颗石子 。 假设他取了前 5 颗,这一行就变成了 [3,4,5] 。 如果李拿走前 3 颗,那么剩下的是 [4,5],亚历克斯拿走后 5 颗赢得 10 分。 如果李拿走后 5 颗,那么剩下的是 [3,4],亚历克斯拿走后 4 颗赢得 9 分。 这表明,取前 5 颗石子对亚历克斯来说是一个胜利的举动,所以我们返回 true 。 思路分析: 是一个博弈问题。由于双方都是足够聪明的人,所以直接用贪心是不行的。 需要用到动态规划求解。dp[i][j][0]表示,在有第i堆到第j堆石子的情况下,先手的最大石子数。dp[i][j][1]则表示后手。状态转移方程是,dp[i][j][0] = max(piles[i]+dp[i+1][j][1], piles[j]