每日两道算法day4—删除链表中重复的元素,队列有效的括号

📅 2026/8/6 1:44:47
每日两道算法day4—删除链表中重复的元素,队列有效的括号
第一问删除链表中重复的元素给定一个已排序的链表的头 head 删除所有重复的元素使每个元素只出现一次 。返回 已排序的链表 。解题分析创建新头节点遍历旧节点只要节点元素不想通则添加到新头节点遍历结束返回新头节点。typedefstructListNodeListNode;structListNode*deleteDuplicates(structListNode*head){if(headNULL)returnNULL;//至少会有一个节点ListNode*pcurhead;ListNode*newheadNULL;ListNode*curnewhead;while(pcur){if(newheadNULL)//此时的新节点为NULL{newheadcurpcur;pcurpcur-next;}else{if(pcur-valcur-val)//当新头节点不为NULL时候判断cur节点的值和pcur节点值是否相等pcurpcur-next;else//不相等就接着插入{cur-nextpcur;curcur-next;pcurpcur-next;}}}if(cur)cur-nextNULL;//防止尾部节点未处理干净returnnewhead;//第二问有效的括号给定一个只包括 ‘(’‘)’‘{’‘}’‘[’‘]’ 的字符串 s 判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。解题分析利用栈进行操作当是[ { (的时候进栈当符号为: } ] )的时候出栈并进行比对不相同则返回false,boolisValid(char*s){chararr[10000];inttop0;while(*s){if(*s[||*s{||*s(){arr[top]*s;}else{if(top0)returnfalse;else{charparr[--top];//取出这个栈顶if((p{*s!})||(p[*s!])||(p(*s!)))//利用栈顶和当前的符号进行比较如果不一样就返回false;不知道取的哪个符号就都进行比较队列中任意一对不符合就返回falsereturnfalse;}}s;}if(top!0)//防止还有符号那么就是false;returnfalse;elsereturntrue;