目录
题目:83. 删除排序链表中的重复元素 - 力扣(Leetcode)
无论是你学习累了,还是情绪低落,还是生活不如意,哪怕是失恋了,跟我一起,放下生活的
担,打开LeetCode,点开题库,选择简单题,快点这个链接,和我一起享受刷题的快乐!

这道题目其实就是,让我们用代码去模拟二进制的运算,
那我们就想一想二进制该咋算,
根据小学数学学的知识,要从左往右计算两数相加,
当每一位相加的值大于进制,那就进位,
为了防止因为两个二进制的大小不同,导致相加的时候一个数加完了,
另一个还没加完,
1. 我们首先计算两数长度,将小的那个数往前补零,让两个数等长
2. 然后从左往右相加,如果相加值需要进位那就进位即可
下面是代码:
class Solution {
public:
string addBinary(string a, string b) {
//计算他们的长度
int alen = a.size();
int blen = b.size();
//在短的字符串前补零,让他们等长,之后好比较计算
while(alen < blen)
{
a = '0' + a;
alen++;
}
while(alen > blen)
{
b = '0' + b;
blen++;
}
//从后往前遍历字符串,并相加进位
for(int j = a.size() - 1; j > 0; j--)
{
a[j] = a[j] - '0' + b[j];
if(a[j] > '1')
{
a[j] = (a[j] - '0') % 2 + '0';
a[j - 1] = a[j - 1] + 1;
}
}
//字符串第零位单独操作,相加
a[0] = a[0] - '0' + b[0];
//进位
if(a[0] > '1')
{
a[0] = (a[0] - '0') % 2 + '0';
a = '1' + a;
}
return a;
}
};


那么这道题啊,就是删除链表的重复项,
那么对于一个简单题来说,
我建议是不要带脑子,
我们直接无脑遍历链表,然后把出现过的数组成一个新链表就行,
因为题目说这是一个排序过的数组,所以重复的数字都是连在一起的,
只需要临时记录一下那个数字是否重复就能防止重复插入。
我个人更喜欢搞个哨兵位再尾插,你们带不带就看个人习惯了,
最后返回那个新链表的头就行。
下面是代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
//判断空链表
if(!head)
{
return nullptr;
}
//建一个哨兵位的头结点
ListNode* newhead = new ListNode;
//cur用来遍历原链表
ListNode* cur = head;
//先头插一个数据
newhead->next = cur;
//prev用来遍历新链表
ListNode* prev = cur;
//遍历原链表
while(cur)
{
//如果节点的值重复就继续遍历,如果不同就尾插进新链表
if(cur->val != prev->val)
{
prev->next = cur;
prev = prev->next;
}
cur = cur->next;
}
//尾结点指向空
prev->next = nullptr;
//换头(其实可以不换的啦)
head = newhead->next;
return head;
}
};

以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。
有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q
ValidPalindromeGivenastring,determineifitisapalindrome,consideringonlyalphanumericcharactersandignoringcases. [#125]Example:"Aman,aplan,acanal:Panama"isapalindrome."raceacar"isnotapalindrome.Haveyouconsiderthatthestringmightbeempty?Thisisagoodquestiontoaskduringaninterview.Forthepurposeofthisproblem
给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in
我正在编写一个简单的日志嗅探器,它将在日志中搜索表明我支持的软件存在问题的特定错误。它允许用户指定日志路径并指定他们想要搜索多少天前。如果用户关闭日志滚动,日志文件有时会变得非常大。目前我正在做以下事情(虽然还没有完成):File.open(@log_file,"r")do|file_handle|file_handle.eachdo|line|ifline.match(/\d+++-\d+-\d+/)etc...line.match显然会查找我们在日志中使用的日期格式,其余逻辑将在下面。但是,有没有更好的方法来搜索没有.each_line的文件?如果没有,我完全同意。我只是想确保我使
我有一个这样的哈希{55=>{:value=>61,:rating=>-147},89=>{:value=>72,:rating=>-175},78=>{:value=>64,:rating=>-155},84=>{:value=>90,:rating=>-220},95=>{:value=>39,:rating=>-92},46=>{:value=>97,:rating=>-237},52=>{:value=>73,:rating=>-177},64=>{:value=>69,:rating=>-167},86=>{:value=>68,:rating=>-165},53=>{:va