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;
}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值