学习练习算法题

LC算法题-思路笔记

初级

掌握算法及数据结构,并提高您的编程能力和一些解题小技巧,一些数据结构题型解题方法。

数组

对数组的去重、旋转移动、是否重复、找出现一的个数、数组的交集、移动零到最后、给定值在数组中找两数的和、有效数独、二维数组90°旋转等等…所学习到的技巧:

  1. 双指针 ,快慢指针 对撞指针 滑动窗口
    快慢指针:可以找到链表的中间值,可以使用在删除时的移动;
  2. 动态规划全局最优解,背包问题,买卖问题;
  3. 贪心算法局部最优解,只选择上升部分,然后累加起来;
  4. 哈希表(HashMap<kay,value>),在遇到需要统计值的个数时,或有加减计算时;例如:是否重复、只出现一次、数组中数的和为给定值等等;方法add() remove() size() getOrDefault()…
  5. 位运算,偶数相同时为0 ,奇数相同时为1;
  6. 直接解决,暴力破解
  7. 还有一些是对应该题找规律,来更好的解决;
  8. 如果不影响解题过程,可以先排序,再来进一步的解决问题,可能回方便一些。

复习回顾了HashMap的一些方法

字符串

对字符串的 反转、字符串的数字反转、找出字符串唯一字符、有效异位词、验证回文字符串(带其他符合如:空格,。)、字符串(含有数字的部分 有符合)转整数、找一个字符串在另一个字符串出现的第一个位置、外观数列、最长公共前缀等等…

  1. 双指针 ,快慢指针 对撞指针 滑动窗口
    快慢指针:可以找到链表的中间值,可以使用在删除时的移动;
  2. 递归全局最优解,背包问题,买卖问题;
  3. 数学,例如如何拆分数字,在比较两个字符串的字符个数是否相同时,可以先加一个,在减去;
  4. KMP,对于暴力破解,更好的字符串匹配算法, 我认为 KMP 算法就是个动态规划问题。KMP 算法知道字符 b 之前的字符 a 都是匹配的,减少多余的检查,提高性能。
    KMP 算法的难点在于,如何计算 dp 数组中的信息?进而应用该数组来移动位置。
    创建一个对应的表
  5. 哈希表(HashMap<kay,value>),在遇到需要统计值的个数时,或有加减计算时;例如:是否重复、只出现一次、数组中数的和为给定值等等;
  6. 一些String类已有的API,charAt() indexOf lastIndexOf

链表

特点:遍历不方便,只能从头一个接一个的找。
链表的查找删除、反转、合并

  1. 借助辅助指针
  2. 递归,合并时 一直是在做 比较添加较小的数,递归从未开始添加
  3. 栈Stack,用于解决是否回文
  4. 找规律,反转等等方法

继续做题中,后续继续总结…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值