数据结构与算法
旺仔的算法coding笔记
从自己能做到的开始,一件件来,缓慢而坚定地前进,尽力而为,自己也终将有成为大佬而从容自在的时候
展开
-
剑指offer熟悉again-First0509
重新把数据结构与算法好好扎实的学一遍,一定要养成自己好好写代码的习惯!就从剑指offer的第一题开始吧!0509二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。def Find(target, array):...原创 2019-05-09 19:57:41 · 133 阅读 · 0 评论 -
有序数组循环右移n位后,寻找最小值,数组中可能包含重复元素-0430
#思路:,# 原来有序的数组,右移n位后,以最小值与最大值的临界位置划分,两段各还是有序的。7,8,9,1,2,3,4,5,6#对于有序的查找,思想是有二分查找。但这是局部有序,所以稍微变点型。###方法2: 此只是要找最小值(其实找到最小值就是分界点位置了)。#用二分的思想,可以发现,当middle<end时,则右侧有序(从中间到最后的这段都有序),无序的肯定在左侧即最小值肯定在...原创 2019-04-30 20:53:43 · 561 阅读 · 0 评论 -
0410 剑指offer
把二叉树打印成多行序列化与反序列化二叉树把二叉树打印成多行问题 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路: 层次遍历,注意多用一个列表存储当前这层的数据,一个list存储上一层的内容,一个存储当前层的值,一个list作为最终的result .注意利用list.pop出队。# -*- coding:utf-8 -*-# class TreeN...原创 2019-04-10 08:50:17 · 131 阅读 · 0 评论 -
剑指offer刷题0412
数据流的中位数滑动窗口的最大值数据流的中位数题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。整体思路:对数值读入后,进行排序,然后再取题目要...原创 2019-04-12 19:49:08 · 111 阅读 · 0 评论 -
剑指offer刷题0409
按之字形打印二叉树按之字形打印二叉树问题请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:类似层级遍历二叉树 的做法,只不过现在需要根据层的奇偶来改变加入的顺序,不能只简简单单用一个队列来解决了。先来分析一下如图,第0层,先a,然后将a的右c-左b加入下一层;第1层,依次上一...原创 2019-04-09 13:03:21 · 131 阅读 · 0 评论 -
0408 剑指offer刷题
对称二叉树的判断题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 #思路: #对称的含义:左子节点等有右子节点,左子树的的左子节点等于右子树的右子节点。 #首先判断根节点的左右,都是6,相等;再判断两个6为根的两棵树,先判断左边的左子树为5, #右边的右子...原创 2019-04-08 21:09:25 · 121 阅读 · 0 评论 -
剑指offer刷题0402
刷题四道,但是还是不牢固,需要再写。参考与感谢:https://codingcat.cn/article/30丑数字符串的排列两个链表的第一个公共节点二叉树的深度丑数把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:除...原创 2019-04-02 21:57:05 · 158 阅读 · 0 评论 -
剑指offer刷题0411
二叉搜索树的第k个结点题目简单,但是问题暴露不少。self,实例变量、函数名的写法、函数嵌套参考:https://blog.csdn.net/u010402786/article/details/50527291二叉搜索树的第k个节点 问题 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 ...原创 2019-04-11 19:36:43 · 121 阅读 · 0 评论 -
剑指offer刷题0401
语言python,为牛客第二版的四道题最小的K个数连续子数组的最大和把数组排成最小的数第一个只出现一次的字符1、最小的K个数最小的K个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路: 解法1:暴力解法当然可以做(先从小到大排序,在取前k个),但是时间复杂度为n的2次...原创 2019-04-01 21:57:37 · 124 阅读 · 0 评论 -
剑指offer刷题0407
删除链表中重复的结点二叉树的下一个结点删除链表中重复的结点题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路首先构造一个空的头节点(以防出现 1->1 这样的链表,应当返回空),然后...原创 2019-04-07 08:57:23 · 123 阅读 · 0 评论 -
剑指offer刷题0406
构建乘积数组正则表达式匹配表示数值的字符串 链表中环的入口结点语言python ,题目来源牛客网今天是第七天,感谢Datawhale这个学习组织和各位同学,我坚持一周了!构建乘积数组问题给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]A[i+1]…A[n-1]。不能使用除法。...原创 2019-04-06 11:28:29 · 294 阅读 · 0 评论 -
剑指offer刷题0405
今天刷的并不牢靠。第一题有点纠结太久了感谢与参考:https://codingcat.cn/article/不用加减乘除做加法把字符串转换成整数数组中重复的数字字符流中第一个不重复的字符不用加减乘除做加法写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。注意: 不能用四则运算符,那则只能是用最原始的二进制位运算。数值在计算...原创 2019-04-05 21:55:04 · 132 阅读 · 0 评论 -
剑指offer刷题0404
左旋转字符串翻转单词顺序列扑克牌顺子求1+2+3+...+n左旋转字符串题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!...原创 2019-04-04 10:10:10 · 137 阅读 · 0 评论 -
剑指offer刷题0403
参考和感谢:https://codingcat.cn/article/30#平衡二叉树数组只出现一次 enumerate的用法与词典遍历时曾经没有明确的python语法点和为s的连续正数序列和为s的两个数字平衡二叉树题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:首先平衡二叉树的定义与性质:它是一棵空树或它的左右两个子...原创 2019-04-03 22:00:30 · 148 阅读 · 0 评论 -
替换空格--剑指Offer(2)
要求请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路如果用C语言,字符串以char[]来存,就要考虑更多的东西,比如数组的容量,挪动各个char,最后的\0等。一种思路是从前往后读,碰到空格,就先把后面的全部内容往后挪两格,加入%20。这样会导致很多内容被多次挪动,O(n^2...原创 2019-01-20 00:39:04 · 108 阅读 · 0 评论 -
基数排序--python3实现
基数排序的思想:借助多关键字排序,循环对各个单关键字进行排序(放到桶里去)基数排序一般用于长度相同的元素组成的数组。首先按照最低有效数字进行排序,然后由低位向高位进行。基数排序可以看做是进行多趟桶排序。每个有效数字都在0-9之间,很适合桶排序,建10个桶很方便。时间复杂度O(n),空间复杂度O(n)参考:https://www.cnblogs.com/linxiyue/p/355517...原创 2019-01-19 17:24:03 · 434 阅读 · 0 评论 -
在数组中查找两个数和为制定x的所有数值对,C实现
如果数组未排序,则先排序。时间复杂度最低的排序算法为O(n),如基数排序。详见下一篇基数排序<待写>思路: 排好序的数组后,从两端前后逼近其和是否为X算法描述如下:(0)首先对原数组进行排序,成为递增数组;(1)对排序后的数组头部a[i]和数组尾部a[j ](j初始值为n-1)相加,比较其和与X的大小,等于X则打印; (2)如果相加小于X,则i++,j不变。如果相加...原创 2019-01-19 15:50:42 · 586 阅读 · 0 评论