1.leetcode125题 字符回文
自己的方法,比较笨,用了两个函数,将char判断一下是不是字母或者是不是数字,是的话加到一个 stringbuffer里面,然后再用栈保存起来,从头判断和栈是否相等
最好的做法,是用双指针,写一个函数判断是否是字母或者数字,如果是非字母或者数字,就++,试着写一下吧!
(出现错误了,忘记判断大小写,还有就是 ascii A 是65 a是97 1是48, 只有26个字母,中间还有一些字符!! 之前自己以为是连贯的!)
2.leetcode9题 数字回文
用了比较笨的方法,直接求出长度,然后双指针
比较好的方法是,在temp/=10的过程中,由于是可以得到他与10的余数,可以直接求反方向的数!
reverse = reverse * 10 + temp %10
3.leetcode128题 未排序数组的最大连续个数
可以用hashset,加入以后,判断hashset(num - 1)是否存在,如果不存在,以这个值为边界点,然后往后扩展,判断num +l 是否存在即可,l++
每个数只会扩展两次 所以是on的
还可以用online做法? 合并!判断左边是否存在,然后合并,判断右边是否存在,合并
自己的想法是用一个桶排序,找到最大的数,然后bucket去依次遍历里面的桶,如果存在就++,但是这个方式 当数是负数的时候就不行
4.leetcode103题 zigzagTree
这个题 好像就是剑指offer里的那个题,完全没必要像那个做法,一个left,一个right Stack,直接奇数层打印,偶数层reverse就可以了
5.leetcode121 买卖股票时机
可以用最简单的思路 on的平方
最好的方法是on,遍历的时候记录里面的最大值最小值,然后更新!
里面有一个需要注意的就是 卖出必须在买出之后,因此最大值的更新必须在最小值更新以后才可以更新,这里用了一个小技巧,在最小值更新的时候,同时把最大值也更新成最小值,相当于 卖出的最大值作废!
6.leetcode54题 遍历一个m*n的数组 打印
7.leetocde221题 最大正方形
和之前遇到的某个题目很像,最大长方形? 还是什么 反正是一个前缀和什么的
很巧的做法,dp ,找dp[i-1][j - 1】 左上角 左边 和上边 最长的1的长度,暴力做法 想一想?
8.leetcode85题 最大矩形
用到单调栈了吧应该! 这个题可以仔细看看
9.leetcode 70题 爬楼梯
斐波拉契数列
10.leetcode41题 找丢失的最小正整数
和前面做的题很像,用一个set去保存所有的数,然后从1开始遍历,判断是否存在。但是这里有一个小问题,如果从1开始 所有的数都存在,那么结果就不在这里面, 应该max+1,然后注意找到以后break
这里上面用的方法,空间复杂度是on的 不符合要求 再看看别人的做法
还有一种
还有一种是 原地hash? 改正负号,之前好像哪里也遇到过这种 改正负号的!