![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode之初级算法
黄焖鸡米饭啊
嗯。
展开
-
初级算法之排序和搜索
总结:这两道题目中第一道题目就是归并排序的一个过程,第二道题目则是对二分搜索的转化应用。在搜索类题目中,尤其是规定了时间复杂度为O(logn)的题目,要考虑二分搜索。掌握二分搜索会大大减小搜索过程的时间复杂度。题目1:合并两个有序数组给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:1.初始化 num...原创 2019-04-26 00:44:07 · 123 阅读 · 0 评论 -
初级算法之链表
总结:链表问题除了添加节点,删除节点,查找节点等常规操作,还要关注一种方法:双指针法,双指针的应用例如题目4;而在双指针法中又可以细化出一种方法:快慢指针,题目5,题目6均是快慢指针的实际应用,而题目2其实也可以使用快慢指针去解决,所以快慢指针是一种很重要的解决链表问题的方法。题目1:删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节...原创 2019-04-24 16:40:04 · 131 阅读 · 0 评论 -
初级算法之数组
总结:数组问题在初级算法层次我认为要关注两种基本方法:数组排序和双指针,有些问题在对数组排序之后会让问题变得简单,例如题目4,题目9。双指针的应用例如题目8,题目9,题目11。而题目9:两数之和则是排序和双指针的综合应用。题目1:从排序数组中删除重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原...原创 2019-04-20 17:16:05 · 595 阅读 · 0 评论 -
初级算法之数学
总结:编程中的初级数学问题更多考察的是数学方面的知识,主要是是完成对一些巧妙的数学方法的代码转换,例如题目2,题目3;以及对一定数学规则的算法模拟,例如题目1,题目4。这类问题难度不大,主要是要去从数学角度进行思考寻找解法。题目1:Fizz Buzz写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“...原创 2019-05-15 00:18:08 · 110 阅读 · 0 评论 -
初级算法之字符串
总结:字符串其实可以看做是字符数组,所以处理字符串实质上就是处理数组问题,在这个模块中可以看到仍有很多题目运用到了数组的经典办法:双指针法,例如题目1,题目2,题目5;还有比较重要的一点是当字符串和数字进行转化的时候要注意整型越界的问题,例如题目2,题目6。题目1:反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数...原创 2019-05-21 00:13:59 · 177 阅读 · 0 评论 -
初级算法之动态规划
总结:动态规划着重解决最优化问题,例如下列题目中给出的最大金额,最大子序和等等。动态规划关键在于将一个问题分解为子问题,通过递推方程自底向上进而得到整个问题的最优解。例如题目1和题目4中将问题分解为了到达i元素时可以获得的最大值,然后一步一步根据递推式求得到达n元素时可以获得的最大值;又例如题目2和题目3将问题分解为了以i元素结尾时可以获得的最大值,然后通过比较这些值的大小来得到最终结果。所以总...原创 2019-05-27 00:24:54 · 160 阅读 · 0 评论 -
初级算法之设计问题
总结:设计这种要实现某些特殊操作的类实质上就是各种数据结构的综合应用,在原有数据结构内部添加一些额外的属性或者其他数据结构来辅助完成操作。所以要解决这样的问题要对常见的数据结构的构成和操作有清楚地认识,并能灵活应用这些数据结构来解决问题。题目1:Shuffle an Array打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] num...原创 2019-05-28 17:19:02 · 148 阅读 · 0 评论 -
初级算法之其他
总结:这六道题目中,题目4是找寻规律,题目5是栈的应用,其余四道均是使用位运算来解决问题。关于位运算在算法中的一些应用,可以参考之前总结过的一篇文章《程序中位运算的妙用》,有时在程序设计加入一些位运算可以有效提升程序运行的速度,优化算法,位运算并不是鸡肋,要能够合理应用。题目1:位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重...原创 2019-06-02 17:20:53 · 97 阅读 · 0 评论 -
初级算法之树
总结:解决和树有关的问题的时候,一般用到的方法有两种:深度优先搜索(DFS)和广度优先搜索(BFS)。广度优先搜索实质上就是层次遍历,每遍历完一层的所有节点才开始遍历下一层节点;深度优先搜索则是按分支去遍历树,一条分支遍历完再遍历下一条分支,深度优先搜索一般是用递归来实现。下面题目中题目3和题目4可以用BFS解决;题目1,题目2,题目3,题目5可以用DFS解决。题目1:二叉树的最大深度...原创 2019-06-04 01:11:34 · 112 阅读 · 0 评论