zoukankan      html  css  js  c++  java
  • fucking algorithm

    真的考了~ 搜狐上来手撕两道代码题。第一道就是这个。

    迭代写法可以,但是很多注意细节。

    递归比较简洁优美。适合装逼,但不适合考试,因为空间复杂度是O(n)。

    1. 递归整个链表:https://leetcode-cn.com/problems/reverse-linked-list/

    -> 判断递归函数的意义

    -> 确定 base case

    -> 不要陷入递归!

     

    2. 反转链表前N个结点 

    def reverseN(head, n):

         if n == 1:

        successor = head.next

        return head 

       p = reverseN(head.next, n - 1)

       head.next.next = head

         head.next = successor

       return p

    3. 反转 m-n 结点

    将函数理解成以 head 为初始结点,相对 head 位置为 m 到 n 的翻转。

    所以对于 head.next,则相对 head.next 位置为 m-1 到 n-1 的翻转。。。。以此类推。

    对于不需要翻转的,只需要返回自身!否则会一直前进到翻转的位置。

    其实这题,大不了先 for loop 到第 m 个位置,再翻转即可。转化成翻转  topk 的问题。

  • 相关阅读:
    Spring Boot|Async
    SonarQube使用
    大数据|linux权限chmod和chown
    Spring Boot|监控-Actuator
    Docker|部署及简单使用
    Spring|IOC启动流程
    Spring|注解
    Spring|@Autowired与new的区别
    Spring|Spring MVC
    个人站点
  • 原文地址:https://www.cnblogs.com/toonice/p/14650637.html
Copyright © 2011-2022 走看看