
算法与数据结构
有节操的正明君
github:https://github.com/zhengmingzhang
个人网站:https://zhengmingzhang.github.io/
展开
-
两种解法解决求取立方根的问题:二分法、牛顿迭代法
这道题实际上是我在实际面试过程中被考到的一道题,个人觉得比较值得记录一下。题目要求:计算给定数字的立方根,并且保留小数点后两位。解法一 :二分法求立方根的问题实际上就是在1~给定数字之间找到一个数,让这个数的立方为给定数字,由此转化为了一个查找问题。话不多说,二分查找还是很容易理解滴,只需要注意如何保留小数点后2位就可以了,上代码def getCube1(input): ...原创 2019-07-20 17:03:02 · 5505 阅读 · 3 评论 -
剑指Offer 数组中只出现一次的两个数字
题目描述:一个整数数组除出了两个数字外,其他数字都出现了两次,请写出程序找出这两个只出现了一次的数字,并将两个数字分别放入num1[0]、num2[0]中。 看到这道题我立刻想到了之前做过的一道找出数组中只出现一次的数字,要用到异或的逻辑运算,因为任何一个数字异或它自己都为0,那么只要对数组中每个元素异或一遍剩下的就是只出现一次的数字。我想这道题一定也是要用到这种方法来解决。但是这道题有...原创 2019-05-16 22:28:31 · 297 阅读 · 0 评论 -
剑指Offer 数字在排序数组中出现的次数
题目:统计一个指定的数在已排序数组中出现的个数一个非常容易想到的办法就是当发现目标数字时开始计数,开始计数后遇到与目标数字不相等的数字时则停止计数并返回。当然此题的核心在于寻找目标数字的起始和终止点即可,因此完全可以想到使用二分查找的方法,代码如下public class Solution { private static int GetStartIndex(int[] arra...原创 2019-05-13 21:32:05 · 141 阅读 · 0 评论 -
有环链表问题总结
一、什么是叫做链表有环?当一个链表没有环时,我们可以直接从链表的头遍历到链表的尾部,而当一个链表有环时,链表会在环中一直旋转。如下图所示:这个单链表即存在一个环,3、4、5、6,环的入口为3。二、如何判断一个链表是否有环?判断一个链表是否有环,我这里提两种方法,比较常用的是第二种1.使用哈希表实现将单链表中的节点元素一个一个放入哈希表(set)中,如果当前放入的节点在哈...原创 2019-04-04 15:24:26 · 556 阅读 · 0 评论 -
快速排序与代码实现
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。是一种分治思想的应用。 快速排序是通过递归调用“切分”来实现的。一、切分(partition) 假设...原创 2019-01-08 11:07:46 · 816 阅读 · 0 评论 -
leetcode 15 3sum python
先说一下自己的想法,这道题用暴力搜索肯定是不行的,自己想到计算两个数的和,之后使用二分查找,找到-(两数之和),最后虽然结果是正确的,但是却超出了时间限制。在博客上看了一些人的代码,提交还是超出时间限制,最后采用了双指针的方法顺利通过。class Solution(object): def threeSum(self, nums): """ :type...原创 2018-10-29 19:58:34 · 256 阅读 · 0 评论 -
leetcode 876 链表的中间结点 python实现
还是比较简单的题,但第一次使用的方法还是超时了,当时使用了两个while,太low了之后想到了使用字典的方法,一定要擅长使用字典啊!# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = ...原创 2018-10-23 20:38:27 · 1111 阅读 · 0 评论 -
leetcode21 合并两个有序链表 python实现
题目比较简单,写个文章记录一下将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解答:# Definition for singly-linked list.# class ListNode...原创 2018-10-19 19:30:55 · 411 阅读 · 0 评论 -
leetcode 707 python实现
使用了结点的方式实现链表,速度比较慢,之后尝试了列表实现,速度快了很多class MyLinkedList: # 定义一个结点的内部类 class Node: def __init__(self, data, nextnode): self.val = data self.next = nextnode ...原创 2018-10-12 08:40:07 · 902 阅读 · 1 评论 -
动态规划问题总结(一)
一、从斐波那契开始什么叫做斐波那契数列?1 1 2 3 5 8 13……f(n-2) f(n-1) f(n-1)+f(n-2)这样的数列就是斐波那契数列,总结起来斐波那契数列的表达式为n=1, f(1) = 1n=2, f(2) = 1n=3,4,5……, f(n) = f(n-1)+f(n-2)也就是说想要得到斐波那契数列中某个位置的数,还要得到它前两个位置...原创 2019-10-15 22:15:42 · 433 阅读 · 0 评论