首页 > 编程知识 正文

C罩杯(英文字母c的发音)

时间:2023-05-03 21:41:33 阅读:105072 作者:4981

目录

为什么要刷LeetCode?刷LeetCode有什么好处?LeetCode vs传统OJLeetCode刷题时的心态构建C#如何刷LeetCode选项1: VS本地Debug在线验证并提交选项2: VS代码本地Debug在LeetCode插件中验证并提交。你为什么刷LeetCode?

众所周知,很多对算法要求较高的软件公司,比如美国FLAGM(脸书、领英、亚马逊/苹果、谷歌、微软),或者国内大厂商BAT、TMD、华为,以及国内新兴的AI公司,都对算法的水平有要求。据悉,知名游戏公司的算法岗位收入较高,对算法的相应要求也相对较高。然而,这些公司大多会使用LeetCode中的问题或自己基于LeetCode的改进算法题库来考察考生。

所以想要进入上述大厂,定期做LeetCode题目是很有必要的。即使不打算进入这些大厂,坚持做LeetCode,你的算法水平和编程能力也会有很大的提升。本文主要介绍如何。NET开发者刷LeetCode面试题。

刷LeetCode有什么好处?

计算机中有许多抽象数据结构来提高抽象思维水平,如:列表、堆栈、链表、哈希表、堆、树等。而LeetCode上的大量高质量算法题基本涵盖了所有这些数据结构的应用。如何将这些问题抽象成数学模型,并转化为具体数据结构的应用,是我们需要改进的地方,这恰恰帮助我们大大提高了抽象思维的水平。

始终控制时间和空间的复杂性。每个算法实现都有其相应的时间复杂度和空间复杂度。但是LeetCode中有些问题对时间复杂度有明确的要求,有的要求O(n),有的要求O(1),否则代码不能是AC(Accepted)。

对每种语言有更深的理解。比如你在学校用C刷,下班后用C#刷,最后用Python刷,那么你会对每种语言的代码量和性能有更深的了解,你也会知道用哪种语言写更短更优雅的代码。

LeetCode与传统OJ的对比

中学有NOI信息大赛,大学有ACM算法大赛。按理说,他们都应该有自己的OJ。这两种OJ类型都不是行业内公司真正的面试问题。NOI对此了解不多。据说他曾经用帕斯卡来解决问题。相应的,我认识一个有大OJ的中学生,叫crddh(https://www.luogu.org/)。ACM有很多免费的OJ,国内也有一些ACM OJ,比如POJ(北京大学)、HDU OJ(杭电)、ZOJ(浙江大学)、HUST OJ(华科)。此外,还有一些在职场上使用的OJ,如Niuke.com OJ、浙江大学计算机编程能力测试PTA(拼写A,原名编程能力测试,简称PAT)等。

国外有UVAOJ http://uva.onlinejudge.org/, Topcoder(http://www.topcoder.com/tc)等。另外,我记得微软学校招聘笔试用的OJ是Hiho编码器http://hihocoder.com/.

与上述OJ相比,LeetCode具有以下优势:

基本上,行业内大公司的真实面试问题本质上没有竞争力,难度适中。它们支持C/C/c#/Python/Java/JS/Ruby/PHP/Kotlin等多种主流编程语言。他们可以不处理输入输出问题,而是专注于解决具体问题,提供一个Discuss环境,参考别人的代码提供执行时间的分布图,看到自己提交的代码运行效率在所有AC代码中排名靠前。传统OJ对用户代码的判断。

1.接受。——通过!(交流)

2.回答错误。——答案是错误的。(西澳大利亚)

3.运行时错误。——程序运行不正确,意外终止等。(RTE)

4.超过时间限制。——超时。程序没有在规定的时间内给出答案。(小标题)

5.演示错误。——格式错误。程序没有以规定的格式输出答案。(PE)

6.超过内存限制。——超级内存。程序没有在指定的空间给出答案。(最大似然法)

7.编译错误。——编译错误。程序不会编译。(行政长官)

在LeetCode中,不应该有第五种状态。

刷OJ的时候,人们经常用两个字:

AK(ALL KILL),比赛中所有问题都已经算出来,提问者需要考虑反AK策略。1Y:第一次提交的时候是正确的,也就是说,当人们经常说“一劳永逸”来刷题的时候,大家都认同: AC一时爽,AC永远爽!

刷题时LeetCode的心理建构

在本文的开头,我们提到了很多业内知名的工厂都需要调查像LeetCode这样难的算法问题。但需要注意的是。

意的是,面试时很可能面试官会对题目的解题要求进行另外的调整,比如要求更低的时间复杂度、更低的空间复杂度之类的,所以呢,面试算法题很重要的是要和面试官保持即时的沟通,而不是一上来就埋头写代码。

有的人刷 LeetCode 中 Easy 和 Medium的题3遍左右后成功拿到微软Offer,还是Special Offer!也有人刷完LeetCode很多遍,也没能拿到大厂Offer呢。

更多算法题面试要点请参看一亩三分地论坛站长Warald 的文章 Leetcode刷题五遍还没offer!举例分析为什么找工作光刷题不够 .

C#如何刷遍LeetCode

在 LeetCode 中提交 C# 代码有两种主流方式,下面以 LeetCode 中的136号题为例来说明。

该题的中文版网址为: https://leetcode-cn.com/problems/single-number/,将代码语言选为C#,则默认的接口代码如下:

Copy cs public class Solution { public int SingleNumber(int[] nums) { } }

选项1: VS本地Debug + 在线验证后提交

在本地Visual Studio中创建 .NET Core/Framework 项目将所生成项目中的 Program.cs中 class Program改为public class Solution接下来把相应的代码放在类 Solution 里面

如果需要本地测试,只需在该类里面加入主函数即可,然后在主函数中调用相应的函数,debug,观察调用时的各项值。

使用LeetCode的"执行代码"案例可以测试当前的测试用例,而界面上的"测试用例"可以自行修改。

如果此时对代码比较有信心,可以直接点"Test"按钮左侧的"Submit"按钮提交代码了。

如果不幸,部分Test case无法通过,则可进行本地debug,下面是我给出的样例代码:

Copy cs using System; using System.Collections.Generic; using System.Linq; namespace leetcoce136 { public class Solution { public int SingleNumber(int[] nums) { int res = 0; Dictionary<int, int> dict = new Dictionary<int, int>(); foreach (var num in nums) { if (!dict.ContainsKey(num)) { dict.Add(num, 1); } else dict[num]++; } res = dict.FirstOrDefault(kv => kv.Value == 1).Key; return res; } public static void Main() { var sol = new Solution(); int[] input = { 4, 1, 2, 1, 2 }; System.Console.WriteLine(sol.SingleNumber(input)); } } }

选项2: VS Code本地Debug + 在 LeetCode 插件中验证和提交

安装C#相关插件

首先微软官方 OmniSharp 团队开发的 C# 插件是必须安装的,

配置 .NET Core运行环境

先安装 .NET Core SDK 3.0,到官网 https://dotnet.microsoft.com/download 下载安装即可。

首先在 VS Code下方的Terminal窗口中依次输入如下命令:

Copy bash $ dotnet --version 3.0.100-preview5-011362 $ cd d:/Coding/csLeetcode $ dotnet new console -o "leetcoce136"

这里假设你以及有文件夹d:/Coding/csLeetcode.

在VS Code中Debug C#

这里我们直接使用刚才带主函数的本地测试代码吧,将代码先拿过来,然后按F5,选择 .NET Core,具体操作见下图:

在配置文件launch.json中,我们需要选择类型的是 .NET: Launch .NET Core Console App.

launch.json的完整配置过程如下:

接下来我们需要修改其中的属性值 program:

默认的值为 "program": "${workspaceFolder}/ymdpkq/Debug/<target-framework>/<project-name.dll>"

其中的<target-framework>是指目标运行环境,其具体版本可以在上面还原的项目文件leetcoce136.csproj中看到:

而我们的项目名,即project-name是leetcode136,于是program的具体值为:

"${workspaceFolder}/ymdpkq/Debug/netcoreapp3.0/leetcode136.dll"

安装 LeetCode 插件

在扩展中搜索安装作者是 ShengChen的LeetCode插件。

然后点击左下角的LeetCode Logo进行登录:

推荐选择力扣leetcode-cn.com:

在国内使用,网络相对稳定。

然后在 LeetCode 插件的配置文档中将leetcode.defaultLanguage设置为csharp。

其完整操作过程如下:

接下来就可以愉快地使用LeetCode刷题了。

我们在左侧题库列表中选择All,找到刚才的例子No.136,双击问题标题,可以看到问题描述:

如果需要提交代码,只需点右下角的"Code Now"按钮。

当我们写完代码后,可以点击里面的代码下方的Test进行测试,这便等价于网页版的按钮"执行代码"。

点Test后有图中3种选项,我一般是使用第一个。除非部分 Test Case 无法通过,才会使用第2个或第3个选项。

此时呢,如果对代码比较有信心,可以直接点"Test"按钮左侧的"Submit"按钮提交代码了。

关于VS Code的LeetCode 插件,文章 LeetCode for VS Code: 春招 Offer 收割利器 中有更详细的说明。

接下来的 LeetCode面试题系列连载 中每篇文章将会提供解题思路、算法复杂度的简要分析、已AC代码、提交的答案排名等,敬请期待。

作者:Bravo Yeung

出处:https://enjoy233.cnblogs.com/

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。