• leetcode题目思路


    001.Two Sum

    一、bruteforce:O(n**2)  O(1)

    二、两边哈希表、一遍哈希表  O(n)  O(n)

    015.Three Sum  

    一、bruteforce:O(n**3) O(1)

    二、排序+双指针:O(n**2)  去重/剪枝

    Four Sum  排序+双层循环+双指针

    020.Valid Parentheses

    栈 O(n) O(n)

    扩展:只有一种括号?

    最长有效括号?leetcode 32.

    021.Merge Two Sorted Lists

    双指针 O(n+m)  O(1)

    递归 O(n+m) O(n+m)

    025.Reverse Nodes in k-Group

    先找到k个节点结束位置next_head,然后循环翻转,每次反转同时next_head指针后移,当第一组节点反转完成之后,下一组k个节点就有找到了。注意最后一组不够k个的处理。  一遍遍历O(n)

    053.Maximum Subarray

    global和local的使用/滑动窗口

    066.Plus One

    从后往前遍历,不需要进位直接返回,需要进位,前一位加一继续循环

    098.Validate Binary Search Tree

    中序遍历、递归(需要设置上下界)

    110.Balanced Binary Tree

    递归:自顶向下O(nlogn)、自底向上(优化:每次保存上一次计算得到的高度值)(O(n))

    134.Gas Station*********

    一次遍历 total  cur   一次遍历、贪心  cur保证当前,tptal保证全局

    136.Single Number

    某个数字只出现一次,其余数字出现两次 异或

    137.Single Number Ⅱ

    146.LRU Cache

    一、OrderedDict

    二、set+双向链表

    206.Reverse Linked List

    prev、cur、nxt指针的使用

    215.Kth Largest Element in an Array

    堆排/快排

    232.Implement Queue using Stacks

    一个进一个出

    328.Odd Even Linked List

    原地

    415.Add Strings

    进位,python不需要考虑溢出

    470.rand7() rand10()

    拒绝采样,7*7=49,拒绝大于10的,idx=1+(idx-1)%10

    496.Next Greater Element Ⅰ

    先找出数组2中的元素的下一个更大元素,并存入字典中,再去遍历数组1

    716.Max Stack

    双栈  peekMax()  popMax()  popMax()时候如果两个栈栈顶元素不一样则pop并保存,找到相同的pop,然后将保存的元素重新push到两个栈中

    860.Lemonade Change

    贪心 five、ten计数

    862.Shortest Subarray with Sum at least K

    滑动窗口、记录

    876.Middle of the Linked List

    快慢指针

    946.Validate Stack Sequences

    重新进栈、与另一个对比,栈顶元素相同则pop

     

  • 相关阅读:
    css文本在标签<text>内平均分布
    ES6实现去重,排序,加升序
    uni-app项目打包成小程序
    uni-app项目( uniapp滚动监听元素)
    运行vue项目:Module build failed: Error: Cannot find module 'node-sass'报错问题
    笨方法实现数量的输入与加一减一 、以及对边界值的判断禁用
    基于nuxt的前端商城pc端项目(bug记录)
    基于nuxt的商城项目pc端项目记录
    Vue学习笔记整理-长期更新
    程序员,不要创业!
  • 原文地址:https://www.cnblogs.com/liushoudong/p/12598415.html
Copyright © 2020-2023  润新知