数据结构和算法
weixin_45405128
stay hungry, stay foolish.
展开
-
Hackerrank-Arrays-Array Manipulation-Maximum value in an array after m range increment operations
给你一个长度为N的列表,列表的初始值全是0。对此列表,你要进行M次查询,输出列表种最终N个值的最大值。对每次查询,给你的是3个整数——a,b和k,你要对列表中从位置a到位置b范围内的(包含a和b)的全部元素加上k。输入格式第一行包含两个整数N和M。接下来 M行,每行包含3个整数a,b和k。列表中的数位置编号为从1到N。输出格式单独的一行包含最终列表里的最大值...原创 2020-01-15 21:39:55 · 567 阅读 · 0 评论 -
Hackerrank-Interview Preparation Kit-Arrays-Minimum Swaps to sort an array
You are given an unordered array consisting of consecutive integers[1, 2, 3, ..., n] without any duplicates. You are allowed to swap any two elements. You need to find the minimum number of swaps re...原创 2020-01-15 20:51:46 · 265 阅读 · 0 评论 -
Python Bitwise Operators
OPERATOR DESCRIPTION SYNTAX & Bitwise AND x & y | Bitwise OR x | y ~ Bitwise NOT ~x ^ Bitwise XOR x ^ y >> Bitwise right shift x>> &...转载 2020-01-14 17:43:08 · 388 阅读 · 0 评论 -
Hackerrank Day 24: More Linked Lists 去除非递减链表中的重复元素
ConstraintsThe data elements of the linked list argumentwill always bein non-decreasing order.TaskANodeclass is provided for you in the editor. ANodeobject has an integer data field,, and a...原创 2020-01-11 11:58:58 · 164 阅读 · 0 评论 -
Hackerrank Day 23: BST Level-Order Traversal 逐层遍历
CODEimport sysclass Node: def __init__(self,data): self.right=self.left=None self.data = dataclass Solution: def insert(self,root,data): if root==None: ...原创 2020-01-11 11:22:31 · 164 阅读 · 0 评论 -
Hackerrank Day 22: Binary Search Trees 构造二叉搜索树并返回搜索树的高度
TaskThe height of a binary search tree is the number of edges between the tree's root and its furthest leaf. You are given a pointer,, pointing to the root of a binary search tree. Complete th...原创 2020-01-11 00:15:24 · 235 阅读 · 0 评论 -
Python中抽象类的实现 Hackerrank Day 13: Abstract Classes
在抽象类中定义抽象方法,无需实现功能子类继承抽象类,但是必须定义抽象方法的具体功能Hackerrank Example Codefrom abc import ABCMeta, abstractmethodclass Book(object, metaclass=ABCMeta): ######### def __init__(self,title,author): ...原创 2020-01-10 17:52:16 · 128 阅读 · 0 评论 -
Inheritance of Class in python
#Given two classes, Person and Student, where Person is the base class and Student is the derived class.class Person: def __init__(self, firstName, lastName, idNumber): self.firstName = firstNam...原创 2020-01-10 17:17:02 · 86 阅读 · 0 评论 -
Hackerrank Day 10: Binary Numbers
TaskGiven a base-integer,, convert it to binary (base-). Then find and print the base-integer denoting the maximum number of consecutive's in's binary representation.Sample Case 1:The binary ...原创 2020-01-09 21:12:14 · 107 阅读 · 0 评论 -
将十进制数字转化成其他进制
#转化成三进制def find( decimal_number ): if decimal_number == 0: return 0 else: return (decimal_number % 3 + 10 * find(int(decimal_number / 3))) #转化成 m 进制,只要改动这两行中的3 deci...原创 2020-01-09 21:07:02 · 216 阅读 · 0 评论 -
Hackerrank Day 8 - Dictionaries and Maps
ObjectiveToday, we're learning about Key-Value pair mappings using aMaporDictionarydata structure. Check out theTutorialtab for learning materials and an instructional video!TaskGivennames...原创 2020-01-09 18:05:12 · 171 阅读 · 0 评论 -
Dijkstra’s shortest path algorithm
import sys class Graph(): def __init__(self, vertices): self.V = vertices #number of vertices self.graph = [[0 for column in range(vertices)] #used for adjacent matr...原创 2019-10-21 09:59:13 · 172 阅读 · 0 评论 -
Kahn’s algorithm for Topological Sorting 拓扑排序算法
Topological sorting forDirectedAcyclicGraph (DAG)有向无环图 is a linear ordering of vertices such that for every directed edge uv, vertex u comes before v in the ordering. Topological Sorting for a grap...原创 2019-10-11 15:49:23 · 272 阅读 · 0 评论 -
Breadth First Search or BFS for a Graph 广度优先搜索算法 & Depth First Search or BFS for a Graph 深度优先搜索算
from collections import defaultdictclass Graph: def __init__(self): self.graph = defaultdict(list) def addEdge(self,u,v): self.graph[u].append(v) #print(self.graph...原创 2019-10-11 14:36:19 · 290 阅读 · 0 评论 -
Radix Sort 基数排序
Idea: sort each digit by counting sort.Start from least significant digit (LSD) - Each digit sort once then done.def counting_sort_by(array,max_rank=None,rank=lambda x:x): if max_rank is None:...原创 2019-10-11 11:25:17 · 125 阅读 · 0 评论 -
Counting Sort & Counting Sort by Given Rank
def counting_sort(array): max_elem=max(array) counts=[0 for i in range(max_elem+1)] for elem in array: counts[elem]+=1 print(counts) return [i for i in range(len(counts))...原创 2019-10-10 18:10:20 · 101 阅读 · 0 评论 -
Time Complexity of Heap & AVL tree
原创 2019-09-23 18:38:03 · 174 阅读 · 0 评论 -
Gray Code
题目在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N 位的格雷码。给定一个整数n,请返回n 位的格雷码,顺序为从0 开始。思路递归的思路就是n 位gray 码是由n-1 位gray 码生成,举个例子简单一些: 比如求n=3 的gray 码,首先知道n=2 的gray 码是(00,01,11,...原创 2019-09-20 17:03:30 · 97 阅读 · 0 评论 -
Heap Sort
Heap Sort:1. Construct heap 2. Swap heap[0] and heap[-1] 3. Make the new object: heap[: -1] a heap 4. Go to 2 until len(heap)==1max_heapify:if parent smaller than greater child, swap with gr...原创 2019-09-18 18:21:08 · 94 阅读 · 0 评论 -
Generating Permutations
方法一:recursion treedef permute_array(a, swapping=0): if swapping == len(a)-1: print(swapping) print("".join(a)) return for i in range(swapping, len(a)): a[s...原创 2019-09-06 00:04:34 · 293 阅读 · 0 评论 -
打印一个集合的所有子集(python)
使用recusion的方法,代码如下:def subsets(list): if len(list) == 0: return [list] #[[]] else: sub_incl = [] sub_excl = subsets(list[1:]) for elem in sub_excl: ...原创 2019-09-11 00:13:18 · 2636 阅读 · 0 评论 -
Duplicate a linked list
题目Write a function duplicate(head) to duplicate the linked list. Here head is the id of the head node of a linked list.Example: For linked list 0 -> 1 -> 2, modify the linked list (in-place) ...原创 2019-09-15 10:57:11 · 141 阅读 · 0 评论 -
Reverse a linked list
题目Write a function reverse(head) to reverse the linked list.Example: For linked list 0 -> 1 -> 2, reverseit (in-place) into 2 -> 1 -> 0.方法一:参考《剑指Offer》https://mp.csdn.net/postedi...原创 2019-09-15 11:56:58 · 165 阅读 · 0 评论 -
Find whether a linked list has loop in it
题目Detect if there is a loop in the linked list. For example, the below linked list has a loop:0->1 -> 2 -> 3 -> 4 -> (linked to the same node 2 in the list)Write a function detect_l...原创 2019-09-15 14:29:06 · 159 阅读 · 0 评论 -
Check parentheses ‘(’,‘)’
题目Given a string, write check(s) to check if the opening brackets ( match closing brackets ). Here we onlyconsider this type of parenthesis pairs. For example,Matched pairs: (abc), (a(b(c))), expe...原创 2019-09-15 16:35:37 · 422 阅读 · 0 评论 -
二叉树的高度
思路 maxDepth()1. If tree is empty then return 02. Else (a) Get the max depth of left subtree recursively i.e., call maxDepth( tree->left-subtree) (a) Get the max depth of ...原创 2019-09-15 17:44:18 · 178 阅读 · 0 评论 -
Check for balanced parentheses in Python
Given an expression string, write a python program to find whether a given string has balanced parentheses or not.Examples:Input : {[]{()}}Output : BalancedInput : [{}{}(]Output : Unbalanced...原创 2019-09-15 19:20:35 · 224 阅读 · 0 评论 -
List-常用操作和时间复杂度
增加列表数据list.append(x) , O(1),or O(n) (when storage is not enough and data needs to be moved) list.insert(index, x),O(N),后面的元素往后移(if we need Frequent insertion/deletion Not frequent random access W...原创 2019-09-16 14:15:09 · 3028 阅读 · 0 评论 -
MSDM5051 Notes 1
What’s the minimal/max height for a binary tree with n nodes?ℎmax = ???? ℎmin = [ log2 ???? ]binary search tree: left leaf < root < right.roofsummary of string in pythonhttps://www.shortcutfo...原创 2019-09-16 15:36:14 · 153 阅读 · 0 评论 -
the time complexities of various data structures
ArraysSet, Checkelement at a particular index:O(1) Searching:O(n)if array is unsorted andO(log n)if array is sorted and something like a binary search is used, As pointed out byAivean, ther...转载 2019-09-17 18:25:12 · 113 阅读 · 0 评论 -
Stacks and Queues in Python
1. 在python中,stack和queque都可以通过list来实现push()都可以通过list.append()来实现 对于stack,pop直接通过list.pop()实现,而对于queque,则使用list.pop(0)2. 还可以用deque来实现stack和quequepop like a stack: .pop() pop like a queque: ....转载 2019-09-17 18:53:14 · 168 阅读 · 0 评论 -
Sorting Algorithms:InsertionSort/BubbleSort/QuickSort/MergeSort
1. insertion sort, O(n^2)def insertion_sort(array): n=len(array) for i in range(1,n): for j in range(i,0,-1): if array[j]<array[j-1]: array[j],array[j...原创 2019-09-17 19:54:04 · 224 阅读 · 0 评论 -
K’th Smallest/Largest Element in Unsorted Array
quick select avg O(n), worst O(n^2)Kth smallest element in Unsorted Array#quickselectimport randomrandom.seed(5)def partition(a): """ Usage: (left,pivot,right) = Partition(array) ...原创 2019-09-18 13:30:35 · 201 阅读 · 0 评论 -
Linear Time Median Finding
https://rcoh.me/posts/linear-time-median-finding/转载 2019-09-18 13:45:03 · 222 阅读 · 0 评论 -
Binary Seach Tree(BST) , BST Sort, and AVL Tree
Binary Seach Tree(BST): left<root<rightheight of tree is expected to be smaller insert while keep tree balanced: read black tree (faster insertion) or AVL tree(lower hightclass Node: de...原创 2019-09-18 16:36:34 · 153 阅读 · 0 评论 -
Complexity of Common Data Structure Operations
转载 2019-09-05 23:53:35 · 268 阅读 · 0 评论