leetcode

LeetCode:59. 螺旋矩阵 II(python)

╄→гoц情女王★ 提交于 2019-11-29 00:15:32
LeetCode:59. 螺旋矩阵 II(python) 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例 : 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] LeetCode 链接 思路 : 设置顺时针方向 遍历矩阵,根据边界和是否访问过该节点来更新方向 附代码(Python): class Solution : def generateMatrix ( self , n ) : # 顺时针方向(右下左上) dx = [ 0 , 1 , 0 , - 1 ] dy = [ 1 , 0 , - 1 , 0 ] dn = 0 # 方向指针 res = [ [ 0 ] * n for _ in range ( n ) ] # 初始化 x = y = 0 # 位置 for i in range ( 1 , n * n + 1 ) : res [ x ] [ y ] = i # 下一步位置 temp_x = x + dx [ dn ] temp_y = y + dy [ dn ] # 判断下一步位置是否合理,若合理则更新位置,若不合理则改变方向并更新位置 if 0 <= temp_x < n and 0 <= temp_y < n and res [ temp_x ] [ temp

Github每日精选:微软Windows Terminal颠覆命令行工具,已登顶GitHub热榜

大兔子大兔子 提交于 2019-11-28 22:17:17
1、 微软Windows Terminal颠覆命令行工具,已登顶GitHub热榜 继 VS Code 颠覆编辑器之后,微软又发布了颠覆命令行工具的 Windows Terminal,目前以 4909 Star 登顶 GitHub 日榜。Windows Terminal 使用基于 DirectWrite/DirectX 的 GPU 引擎加速文本渲染,提供多标签、分割窗口、快捷键、完整的 Unicode 字符支持等功能。当然,最重要的是,它向下兼容 PowerShell、Cmd,原生支持 WSL(Linux子系统)、SSH 等 Linux 命令行程序,第三方的 Cygwin、MinGW、PuTTY 等工具可以被统统换掉了。 2、 技术面试题解:记录自己的LeetCode解题之路 刷题是技术面试不成文的套路,Google、微软、Facebook、BAT 等公司,都会通过做题来面试技术应聘者。而 LeetCode 上的考题,基本就是应聘者通往互联网大厂之路的敲门砖。lucifer 小哥的新项目 LeetCode 题解正是抓住了这一痛点,本周收获 2785 Star,暂列 GitHub 周榜第三。等目前的一、二部分更新完整,计划中的三、四部分完成之后,该项目的热度必定会进一步上升。 该项目认为,只有熟练掌握基础的数据结构与算法,才能对复杂问题迎刃有余。其仓库目前分为四个部分:第一个部分是

ARTS

被刻印的时光 ゝ 提交于 2019-11-28 20:18:54
ARTS的初衷 Algorithm。主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell。 Review:主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。加翻译 Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。 Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。 来源: https://www.cnblogs.com/wangshuo/p/11426155.html

刷了几千道算法题,我私藏的刷题网站都在这里了

て烟熏妆下的殇ゞ 提交于 2019-11-28 20:14:43
作者 | Rocky0429 来源 | Python空间(ID: Devtogether ) 遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活... 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网站放出来,让我们一起爽! 刷题,是这个世界上最有意思的事儿! 当然刷题不能乱爽,你要知道刷题要干嘛,是找工作面试、研究生复试机试,是参加程序设计竞赛还是为了提高自己,在这里我将这些分为三类:收割 offer 版、ACM 竞赛版和提高版。 0x00 收割 offer 版 不管是找工作笔试面试白板试进大厂,还是研究生参加初试复试机试,数据结构和算法都是绕不过去的坎,刷题就成了很多人的需求,快来看看下面这些网站,变身刷题机器,收割 offer 吧! 1、leetcode 英文网址:https://leetcode.com/ 中文网址:https://leetcode-cn.com/ 估计 leetcode(力扣)大家都很熟悉了,都被推荐烂了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至

大学四年,小白一路走来,分享一波我是如何学习、提高自己的算法

只愿长相守 提交于 2019-11-28 20:12:50
大一从一个小白一路走过来,也在 leetcode 刷了几年了题,也是有点经验,也走过很多坑,在此分享我的一波经验,请耐心看完一定会有所帮助 。 切勿盲目刷题:刷题前的知识积累 说实话,想要提高自己的算法,我觉得就是脚踏实地着多动手去刷题,多刷题。 但是,如果你是小白,也就是说, 你连常见的数据结构,如链表、树以及常见的算法思想,如递归、枚举、动态规划 这些都没学过,那么,我不建议你 盲目疯狂着去刷题 的。而是先去找本书先去学习这些必要的知识,然后再去刷题。 因为,如果这些基础都不懂的话,估计一道题做了几个小时,然后看答案都不不懂,做题没有任何思路,这是很难受的。久而久之,估计没啥动力了,我刚开始就是这样,一道题答案看一天,然而还是不大懂,什么回溯啊,暴力啊,还不知道是啥意思。 也就是说,假如你要去诸如leetcode这些网站刷题,那么,你要先具备一定的基础,这些基础包括: 1、常见数据结构:链表、树(如二叉树)。(是的,链表和二叉树是重点,图这些可以先放着) 2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。(贪婪、穷举、分治是基础,动态规划有难度,可以先放着) 以上列出来的算是最基本的吧。就是说你刷题之前,要把这些过一遍再去刷题。如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。 总之,千万不要急,先把这些基本的过一遍,力求理解

国内C/C++刷题网站汇总

╄→尐↘猪︶ㄣ 提交于 2019-11-28 19:20:42
作者:Luau Lawrence 链接:https://www.zhihu.com/question/25574458/answer/31175374 来源:知乎 - Welcome To PKU JudgeOnline 北京大学的Online Judge。POJ上面的题目有点老了,但好处是做的人多,经典算法题多,解题报告也多,适合上手。 - ZOJ : Home 浙江大学的Online Judge。ZOJ用的不多,但为数不多的几次体验好像都还可以,值得尝试。 - Welcome to Hangzhou Dianzi University Online Judge 杭州电子科技大学的OJ。杭电OJ在近几年取代了POJ,成为是目前国内最主流的OJ。它的题目丰富,难度梯度合理,广受全国各大高校的青睐。每年也会有大大小小的比赛挂在杭电的OJ上举办,去年的亚洲区网络赛也是在这上面做的。由此可见其在国内广大ACMer心目中的地位。也正因为如此,网上hdu的解题报告也很多,适合个人进阶训练。 - UVa Online Judge 西班牙Valladolid大学的Online Judge。是最古老也是全世界最知名的Online Judge,题库有详细的分类:如世界总决赛题目,刘汝佳的题目等等。题目目类型非常广泛。绝大部分的题目难度偏易,适合初学者磨练程序设计。 - Timus Online

2014年计算机求职总结--准备篇

こ雲淡風輕ζ 提交于 2019-11-28 19:20:30
版权所有,转载请注明出处,谢谢! http://blog.csdn.net/walkinginthewind/article/details/13000431 找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的 offer 。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加实习招聘等等。当然,其实主要还是研二开始准备的,也算不上多认真,反正一天一天的积累吧。这里我把我准备的内容向大家分享一下。 一、推荐书籍 计算机的好书挺多的,我买了也有四五十本,也花了不少钱,但是这些投资都是值的,好好看一下这些书,让自己找工作时的薪水涨个几千是没问题的。当然,也有些书是电子版的。我是 c++ 方向的,可能大部分书都是和 c++ 相关的。 1. c 、 c++ 相关 C 语言问题一般都是在笔试题中出现,面试题中问的比较少。首先是下面这三本经典的 C 语言书: 《 C 和指针》 《 C 专家编程》 《 C 缺陷与陷阱》 这里还要极力推荐的是: 《 C 语言深度剖析》 这本书是国内人写的,重点讲解了 C 语言里的一些晦涩的问题。 上面这几本书应该基本上就可以熟练掌握 C 语言的各种问题了,笔试题基本都能从容应对。 下面首先推荐三本 C++ 相关的书: 《深度探索 C++ 对象模型》 《 Effective C++ 》

leetcode 小总结

a 夏天 提交于 2019-11-28 18:55:29
1、全排列 [leetcode] 46.全排列 解法一:不修改原始数组,使用visited记录已使用过的元素,以及level记录已排列的个数; 解法二:通过交换start的元素实现; 解法三:逐渐增加排列的元素数目; [leetcode] 47.全排列II 解法一:不修改原始数组,使用visited记录已使用过的元素,以及level记录已排列的个数,但需要排除当前一个数字已经排列过的情况,即 nums[i] == nums[i - 1] && visited[i - 1] == 0 解法二:通过交换start的元素实现,但需要排除当前一个数字已经排列过的情况,即 while (j >= start && nums[j] != nums[i]) --j; if (j != start - 1) continue; 解法三:逐渐增加排列的元素数目,使用set去除重复结果; set<vector<int>> res; [leetcode] 60.序列排序: 给定你n和k,返回第k个排列。 解法一:记录n! f[i] = f[i - 1] * i; 2、数组相关 [leetcode] 55.跳跃游戏: 有一个非负整数的数组,每个数字表示在当前位置的基础上最多可以走的步数,求判断能不能到达最后一个位置。 解法一:动态规划Dynamic Programming来解,dp[i

小白一路走来,连续刷题三年,谈谈我的算法学习经验

狂风中的少年 提交于 2019-11-28 17:44:39
大一从一个小白一路走过来,也在 leetcode 刷了几年了题,也是有点经验,也走过很多坑,在此分享我的一波经验,请耐心看完一定会有所帮助 。 切勿盲目刷题:刷题前的知识积累 说实话,想要提高自己的算法,我觉得就是脚踏实地着多动手去刷题,多刷题。 但是,如果你是小白,也就是说, 你连常见的数据结构,如链表、树以及常见的算法思想,如递归、枚举、动态规划 这些都没学过,那么,我不建议你 盲目疯狂着去刷题 的。而是先去找本书先去学习这些必要的知识,然后再去刷题。 因为,如果这些基础都不懂的话,估计一道题做了几个小时,然后看答案都不不懂,做题没有任何思路,这是很难受的。久而久之,估计没啥动力了,我刚开始就是这样,一道题答案看一天,然而还是不大懂,什么回溯啊,暴力啊,还不知道是啥意思。 也就是说,假如你要去诸如leetcode这些网站刷题,那么,你要先具备一定的基础,这些基础包括: 1、常见数据结构:链表、树(如二叉树)。(是的,链表和二叉树是重点,图这些可以先放着) 2、常见算法思想:贪婪法、分治法、穷举法、动态规划,回溯法。(贪婪、穷举、分治是基础,动态规划有难度,可以先放着) 以上列出来的算是最基本的吧。就是说你刷题之前,要把这些过一遍再去刷题。如果你连这些最基本的都不知道的话,那么你再刷题的过程中,会很难受的,思路也会相对比较少。 总之,千万不要急,先把这些基本的过一遍,力求理解

LeetCode 刷题笔记——递归与回溯的理解

空扰寡人 提交于 2019-11-28 17:44:11
LeetCode 刷题笔记——递归与回溯的理解 马上就要入职了。在入职之前受师兄点拨,疯狂刷 LeetCode ,整个痛并快乐着的过程中,在算法和数据结构方面受益良多。 在刷题过程中,很快的就遇到了闻名已久的 递归 (Recursive) 。首次遇到递归,是 LeetCode 的第 17 题: Letter Combinations of a Phone Number 。解这道题的时候,虽然之前没有专门学过,但最先就想到了递归的解法,无师自通的把这个题解开了还让我得意了许久~ 不过后来又遇到了第 22 题: Generate Parentheses ,本来以为是一个很简单的,可以无脑用递归解决的问题,直接废了我一个上午…… 后来网上查了一下,它们说要用 回溯 (Backtrack) 的方法理解并解答。一看代码,形式同样也是反复调用函数自身,感觉这和递归并没什么区别啊? 于是多做了几道关于递归和回溯的问题,并在网上找了一些大神们的言论,自己对 递归 和 回溯 进行一些总结如下。 参考地址: 题库: LeetCode 递归与回溯的区别解释: 《关于递归与回溯比较通俗的方法》 《回溯和递归区别》 答题思路与源码 《leetcode 46. Permutations-全排列|回溯|递归|非递归》 《刷题笔记3(关于Permutation需要知道的事)》 《以Generate