08 2020 档案
摘要:71.简化路径。给定一个Unix风格的路径,对路径中相对引用进行简化,给出简化后的绝对路径。其实问题本身就是一个先进先出的过程,很容易就能想到用栈的结构,即每次遇到代表目录的字符串,则进栈,遇到”.”跳过,遇到”..”则将栈顶元素弹出,最后再将栈中内容输出即可。
阅读全文
摘要:61.旋转链表。给定一个链表和旋转距离,返回链表向后旋转的结果。比如链表1->2->3,旋转2个位置,结果为2->3->1。其实就是要找到旋转之后的链表的头指针和尾指针,可以直接双指针往后遍历得到新的头尾指针,为了防止访问到空指针,可以将原链表头尾相连形成循环链表。另外给定的距离可能比链表长度长,所以先得到链表长度,对距离进行取余操作。
阅读全文
摘要:59.螺旋矩阵。给定矩阵的维度n,返回n×n的矩阵,其中数字按照顺时针的方式排列。这道题相对比较容易,可以直接按顺序进行数字的填入,只要判断好边界就可以了,加上填了数字的格子不能再填,可以认为是新的边界,需要每填完一行或一列之后对边界进行更新。
阅读全文
摘要:47.全排列II。给定一个带有重复数字的数组,给出所有的不重复排列组合的情况。可以通过树的方式很好的理解并解决。按从前往后遍历的顺序,每往后遍历一个元素生成新的一层节点,该层各个节点为当前已遍历的所有元素的全排列,最终生成的叶子结点就是最终结果。因此可以使用递归的方法,实现层层遍历。要注意的是,因为有重复元素的存在,所以排列的时候要对重复元素进行去重。
阅读全文

浙公网安备 33010602011771号