day5 leetcode(16,20,21)

三数之和

在这里插入图片描述
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
n=len(nums)
closest=float(‘inf’)
for i in range(n):
l,r=i+1,n-1
while l<r:
cur_s=nums[i]+nums[l]+nums[r]
cur_dif=cur_s-target
if abs(cur_dif)<abs(closest-target):
closest=cur_s
if cur_dif==0:
return target
elif cur_dif<0:
l+=1
elif cur_dif>0:
r-=1
return closest

有效的括号

在这里插入图片描述
class Solution:
def isValid(self, s: str) -> bool:
stack=[]
cacha={’(’:’)’,’[’:’]’,’{’:’}’}
for c in s:
if c in cacha:
stack.append©
continue
if len(stack)0 or cacha[stack.pop()]!=c:
return False
return len(stack)0
对于这种匹配的题,发现栈是最简单明了的。可以一一对应。让我想起了之前的广度遍历二叉树。另附想不借助栈但是错了的解法
class Solution {
public:
bool isValid(string s) {
int n=s.length();
int a=0,a1=0,b=0,b1=0,c=0,c1=0;
for(int i=0;i<n;i++){
if(s[i]
’(’)
a++;
if(s[i]
’)’)
a1++;
if((a1-a)>0)
return false;
if(s[i]’[’)
b++;
if(s[i]
’]’)
b1++;
if((b1-b)>0)
return false;
if(s[i]’{’)
c++;
if(s[i]
’}’)
c1++;
if((c1-c)>0)
return false;
if(((a-a1)0)&&((b-b1)!=0||(c-c1)!=0))
return false;
if(((b-b1)0)&&((c-c1)!=0||(a-a1)!=0))
return false;
if(((c-c1)0)&&((b-b1)!=0||(a-a1)!=0))
return false;
}if(a
a1&&b
b1&&c
c1)
return true;
else return false;
}
};
希望哪天能想到完善它的办法。

合并两个链表

在这里插入图片描述
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if(l1null||l2null)
return l1null?l2:l1;
if(l1.val<=l2.val){
l1.next=mergeTwoLists(l1.next,l2);
return l1;
}
else{
l2.next=mergeTwoLists(l1,l2.next);
return l2;
}
}
}
借助递归极大减少了代码量,但是对于递归思想还是有些不熟悉。
以下是非递归做法,但是对于l1 l2 同时为空的情况 总是修改不对,对于空指针这个难题,还是力不从心 同样附上错误代码,希望有一天能够解决。
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode *l3;
ListNode * pa;
ListNode * pb;
ListNode * pc;
if(l1
nullptr&&l2==nullptr)
return NULL;
pa=l1;
pb=l2;
l3=pc=l1;

while(pa&&pb)
{
        if(pa->val<pb->val)
        {
            pc->next=pa;
            pc=pa;
            pa=pa->next;

        }
        else if(pa->val>pb->val)
        {
                    pc->next=pb;
                    pc=pb;
                    pb=pb->next;

        }
        else if(pa->val==pb->val)
        {
            pc->next=pa;
            pc->next->next=pb;
             pc=pb;
             pa=pa->next;
             pb=pb->next;
        }
}
return l3;
}

};

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值