- 博客(8)
- 收藏
- 关注
原创 代码随想录算法训练营第11天| LeetCode|C++| 20. 有效的括号1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值
给定一个只包括'('')''{''}''['']'的字符串s,判断字符串是否有效。思路:出现错误的三种情况,第一就左括号多了没有足够的右括号来匹配,第二个就是右括号多了,第三就是括号出现不匹配的情况。
2023-11-04 16:16:22 70 1
原创 代码随想录算法训练营第8天| LeetCode|C++| 344.反转字符串 541. 反转字符串II LCR 122.路径加密 LCR 182.动态口令
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。思路:可以直接调用reverse函数,这里我们可以将字符串看做数组,每一个字有下标,那这样就很简单了,双指针直接上;
2023-11-02 01:45:00 154
原创 代码随想录算法训练营第7天| LeetCode|C++| 第454题.四数相加II 383. 赎金信 第15题. 三数之和
思路:首当其冲,当然还是我们的暴力解法,两个for循环来遍历magazine和ransomnote字符串,若在ransomnote中找到了和magazine相同的字符,则将ransomnote中的该字符删去,最后统计eansomnote中字符数,若为0,则说明magazine中字符可以组成ransomnote。我们可定义一个unordered_map,key用来放两数之和,value用来放a+b两数之和出现的次数,,即遍历A,B两个数组,统计两数之和,和出现的次数,存储到map中;否则返回 false。
2023-10-31 23:42:29 70 1
原创 代码随想录算法训练营第6天| LeetCode|C++| 2.有效的字母异位词、349. 两个数组的交集、第202题. 快乐数
思路:我们定义一个数组res来记录字符串中字母出现的次数,我们知道ASCll码中字符a到z是连续的26个数字,故我们将a映射到下标0;z映射到下标25;我们先遍历字符串s,将s[i]-'a'进行加1操作,求出s字符串中字符串出现的次数,而对于t字符,遍历t时,对于r中出现的字符进行减1操作,最后看看res数组中元素的值是否为0,若为零,说明s字符和t字符中元素出现的次数是一致的,二者是有效的字母异位词,反之则反。
2023-10-31 03:30:00 68 1
原创 代码随想录算法训练营第四天| LeetCode|C++| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
思路:首先创建一个虚拟头节点指向源头节点head,设置一个cur指针指向虚拟头节点(xunihead)来进行交换操作。进行交换的思路是,首先head和head->next的交换,在实现这两个节点的交换过程中,我们会遇到一些问题。注意:要分节点的数量奇偶来也定终止条件,交换节点时,操作指针一定要指到的是第一个节点的前一个节点,最后返回dummyhead->next的值就好。
2023-10-30 01:00:00 36
原创 代码随想录算法训练营第3天| 203.移除链表元素 707.设计链表 206.反转链表
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。思路:我们设置一个虚拟头节点来进行删除操作,将虚拟头节点的next指针指向原先链表的头节点,完成连接,这样可以避免删除的值正好是头节点的值;先查询虚拟头节点下一个节点也就是原链表头节点是否为空,不为空进入while体遍历链表;if判断是否为移除的值,若是,进入if体;若不是移除的值,继续向下遍历。
2023-10-28 02:00:00 50
原创 代码随想录算法训练营第一天|704.二分查找,27.移除元素
思路:一个升序的有序数组,要找到目标值;1.首先暴力当然是可以的,for循环遍历数组中所有元素,等于目标值时,返回下标。2.二分查找:这里涉及到左闭右闭和左闭右开两种情况2.1 左闭右闭[]定义目标值在一个左闭右闭的区间,用while来判断二分是否停止,while(left
2023-10-26 11:57:06 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人