记录自己刷算法题中遇到的问题和自己的思路;
1、无重复长度的最长子串:
题目描述:

提示:
- `0 <= s.length <= 5 * 104;
s由英文字母、数字、符号和空格组成;
思路:
就是做两个标志位,表示当前字符串的起始位置和正在比较的字符位置;
遍历整个字符串;
从起始标志位开始,到结束位置,依次比对是否有重复字符;
如果无,就结束位置加加;
如果有,就计算长度,并移动起始位置到重复字符的下一个位置;
然后一直循环;
要特别考虑:
1 | au |
这些特殊排序的字符串;
是因为最后一个没有办法比较;
题解代码:
1 | int lengthOfLongestSubstring(char *s) |
改进:
1 | //方法2 |
2、括号匹配

1 | bool isValid(char * s){ |
3、成最多水的容器

1 |
|
4、有序链表合并
题目描述:

1 | /** |
思路:
主要是不用考虑申请空间的问题,因为空间本身就是存在的,只需要改变链表中各个节点间的指向关系就可以;
最后看哪一个先为NULL,然后把不为空的整体连接上去,返回即可;