算法
文章平均质量分 68
起名字什么的好难
在自我提升的路上奔腾不息~
展开
-
python堆排序实现
首先需要定义一个调整堆的函数,动态调整堆为最大堆def heap_sink(heap, heap_size, parent_index): print("heap_sink") print("heap_size") print("parent_index", parent_index) """最大堆-下沉算法""" child_index = 2 * parent_index + 1 # temp保存需要下沉的父节点,用于最后赋值 temp = h原创 2021-06-30 20:57:27 · 143 阅读 · 0 评论 -
给定N*M格子,求从左上角走到右下角的走法总数(每次只能往右或往下走一步)python
非递归实现import numpy as npdef walk_nm(N, M): res = np.zeros([N, M]) for i in range(N): res[i, 0] = 1 for j in range(M): res[0, j] = 1 for i in range(N): for j in range(M): if i != 0 and j != 0:原创 2021-06-29 21:43:13 · 2726 阅读 · 0 评论 -
定义二叉树结点,构建三层二叉树,层序输出(python)
二叉树结点定义class bi_tree: def __init__(self, v): self.value = v self.lsub = None self.rsub = None 构建三层二叉树,形如root_tree = bi_tree(3)left_tree = bi_tree(2)right_tree = bi_tree(4)root_tree.lsub = left_treeroot_tree.rsub = rig原创 2021-06-29 15:40:31 · 529 阅读 · 0 评论 -
LeetCode560:和为K的数组
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subarray-sum-equals-原创 2021-03-12 17:16:00 · 399 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task14
LeetCode215 数组中的第K个最大元素Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.思路一:调用python库class Solution(object): def findKthLargest(self, nums, k): "原创 2021-01-27 01:48:15 · 107 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task13
LeetCode160 相交链表Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked lists:LeetCode160 相交链表官方解决方案LeetCode169 多数元素Given an array nums of size n, return the majority ele原创 2021-01-26 00:13:14 · 96 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task12
LeetCode146 LRU缓存机制Design a data structure that follows the constraints of a Least Recently Used (LRU) cache.Implement the LRUCache class:LRUCache(int capacity) Initialize the LRU cache with positive size capacity.int get(int key) Return the value o原创 2021-01-24 00:15:36 · 180 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task11
LeetCode136 只出现一次的数字Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.Follow up: Could you implement a solution with a linear runtime complexity and without using extra memory?思路:位运算(异或)下面的解释原创 2021-01-23 00:03:40 · 128 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task10
LeetCode 121 买卖股票的最佳时机You are given an array prices where prices[i] is the price of a given stock on the ith day.You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.原创 2021-01-22 00:14:41 · 125 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task09
LeetCode088 合并两个有序数组Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.The number of elements initialized in nums1 and nums2 are m and n respectively. You may assume that nums1 has a size equal to m + n such t原创 2021-01-21 00:39:43 · 99 阅读 · 2 评论 -
Datawhale LeetCode腾讯精选50——Task08
LeetCode062:不同路径A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marke原创 2021-01-19 22:10:27 · 124 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task07
LeetCode 054: 螺旋矩阵Given an m x n matrix, return all elements of the matrix in spiral order.LeetCode054螺旋矩阵官方题解LeetCode 059: 螺旋矩阵 IIGiven a positive integer n, generate an n x n matrix filled with elements from 1 to n2 in spiral order.LeetCode05原创 2021-01-18 23:20:06 · 112 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task06
LeetCode 043 字符串相乘Given two non-negative integers num1 and num2 represented as strings, return the product of num1 and num2, also represented as a string.Note: You must not use any built-in BigInteger library or convert the inputs to integer directly.原创 2021-01-17 22:46:58 · 122 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task05
LeetCode 023:合并K个排序链表You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.Merge all the linked-lists into one sorted linked-list and return it.三种解决方案:1)两两合并,详细可看LeetCode:23. 合并K个排序链表(python)2)将所有的链表放入数组,对数原创 2021-01-16 22:11:22 · 246 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task04
LeetCode021:最接近的三数之和Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.这一题原创 2021-01-14 17:27:14 · 296 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task03
LeetCode11:盛最多水的容器Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of the line i is at (i, ai) and (i, 0). Find two lines, which, together with the原创 2021-01-14 00:00:52 · 144 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task02
LeetCode07:整数反转Given a 32-bit signed integer, reverse digits of an integer.Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For this problem, assume that your func原创 2021-01-12 21:01:29 · 124 阅读 · 0 评论 -
Datawhale LeetCode腾讯精选50——Task01
LeetCode02:两数相加You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.You may a原创 2021-01-12 01:02:16 · 105 阅读 · 0 评论 -
DataWhale编程实践:Task04——查找2
具体算法思想参见team-learning-program/LeetCodeClassification/3.查找.mdLeetCode 1 Two Sumclass Solution: # 遍历数组过程中,当遍历到元素v时,可以只看v前面的元素,是否含有target-v的元素存在。 # 如果查找成功,就返回解; # 如果没有查找成功,就把v放在查找表中,继续查找下一个解。 # 即使v放在了之前的查找表中覆盖了v,也不影响当前v元素的查找。因为只需要找到两个元素,原创 2020-08-28 23:26:25 · 128 阅读 · 0 评论 -
DataWhale编程实践:Task03——查找1
具体算法思想参见team-learning-program/LeetCodeClassification/3.查找.md这部分主要是利用set,dict,map的一些属性和方法解决问题。from typing import Listclass Solution: # LeetCode 349 Intersection Of Two Arrays 1 # 把nums1记录为set,判断nums2的元素是否在set中,是的话,就放在一个公共的set中,最后公共的set就是我们要的结果原创 2020-08-24 16:24:32 · 136 阅读 · 0 评论 -
DataWhale编程实践:Task02——动态规划
具体算法思想参见team-learning-program/LeetCodeClassification/2.动态规划.md下面是对上面链接中的各个leetcode题给出的代码测试版本(注意函数括号中的一些内容被删掉了,因为不需要)。另外,子序列和子串是不一样的概念,子序列可以是原字符串中不连续的字符组成的字符串,只要每个字符出现的顺序和原字符串一致,而子串必须是由原字符串中的连续字符组成的串串。# Leetcode 300.最长上升子序列def lengthOfLIS(nums): if原创 2020-08-21 20:52:28 · 190 阅读 · 0 评论 -
DataWhale编程实践:Task01——分治
具体算法思想参见team-learning-program/LeetCodeClassification/1.分治.md下面是对上面链接中的各个leetcode题给出的代码测试版本(注意类名称都由Solution改为相互不同名称):# 169多数元素class MajorityElement(object): def majorityElement(self, nums): """ :type nums: List[int] :rtype: i原创 2020-08-17 19:41:52 · 127 阅读 · 0 评论 -
数据结构之链表——浙大数据结构公开课代码整理
浙江大学数据结构陈越老师视频课程链表代码整理链表结构头文件//structLinkList.h#include <iostream>typedef struct LNode *List;struct LNode{ double Data; List Next;};//list lengthint Length(List PtrL){ ...原创 2019-08-04 17:31:59 · 384 阅读 · 0 评论 -
数据结构之线性表——浙大数据结构公开课代码整理
浙江大学数据结构陈越老师视频课程线性表代码整理线性结构头文件//structList.h#include <iostream>//define maxsize of list#define MAXSIZE 100//define structure of listtypedef struct LNode *List;struct LNode{ doub...原创 2019-08-04 13:12:05 · 262 阅读 · 0 评论 -
KMeans代码实现及展示(C++)
自定义Kmeans实现头文件cppKmeans.h:这个头文件改编自简单的KMeans聚类C++代码实现及解析,文中有对此kmeans实现代码的详细解释。#pragma once//cppKmeans.h#include <iostream>#include <vector>#include <cmath>#include <sstream&...原创 2019-07-24 16:09:57 · 1593 阅读 · 0 评论 -
简单的KMeans聚类C++代码实现及解析
KMeans是一种无监督学习方法,通常用于没有任何标记的数据的分类。它的目标是将数据分为k类或者k组。通过不断地迭代将每个点根据特征相似度分配给k个类别中的某一类。GitHub看到一个C++实现KMeans的代码,具体实现如下(这个代码有一个问题是需要外部传参给main函数,指示数据文件和k的具体值。如果想直接在vs中运行需要对代码进行一定的更改,将main函数中的参数和内部一些解析参数命令删掉...原创 2019-07-23 22:33:04 · 2179 阅读 · 6 评论 -
约瑟夫环-C++实现
约瑟夫环/圆桌会议原创 2017-07-14 11:03:38 · 6208 阅读 · 0 评论 -
堆排序
堆排序 c++原创 2017-03-16 10:46:08 · 234 阅读 · 0 评论 -
优先队列
优先队列原创 2017-01-15 13:51:35 · 342 阅读 · 0 评论 -
数据结构之堆栈(顺序存储)——浙大数据结构公开课代码整理
浙江大学数据结构陈越老师视频课程链表代码整理链表结构头文件//structStack.h#include <iostream>#define MaxSize 10#define ERROR -0.000000006typedef struct SNode *Stack;struct SNode{ double Data[MaxSize]; int...原创 2019-08-04 19:09:39 · 403 阅读 · 0 评论 -
The Josephus Problem - 约瑟夫环
Youtube上一个讲解约瑟夫环问题的视频非常棒,很形象,很具体。视频提供了两种解法。第一种:n:是士兵的总数,a是不小于n情况下2的最大指数,l是剩余的士兵数,W(n)计算的就是士兵数为n的情况下最后幸存的士兵编号。第二种:二进制编码士兵数为41,可以拆分为多个2的指数次方的和,然后将最高位移到最后,二进制计算得到的就是最后胜出的士兵编号。视频地址,有兴趣的可以想办法看看...原创 2019-08-08 14:55:12 · 511 阅读 · 0 评论 -
剑指offer第二题:替换空格(c++实现)
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。#include <iostream> using namespace std; //替代字符串里的空格void replaceSpace(char *str, int length){ int blankC...原创 2019-08-14 21:28:11 · 215 阅读 · 0 评论 -
剑指offer第三题:从尾到头打印链表(c++实现)
输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。利用栈的先进后出,先将元素入栈,再将元素从栈中放到vector中:用时3s,占存408k#include <iostream> #include <vector> #include <stack> using namespace std; struct ListNode{ ...原创 2019-08-14 21:42:52 · 196 阅读 · 0 评论 -
剑指offer第四题:重建二叉树(c++实现)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。一个小Tips:查询元素在vector中位置可以用vector::iterator iter=find(v.begin(),v.end(),num)函数和dis...原创 2019-08-14 21:53:07 · 709 阅读 · 0 评论 -
剑指offer第五题:用两个栈实现队列(c++实现)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:入栈时将元素入stack1,同时判断stack2是否为空,空则将stack1中元素顺序入栈到stack2中;出栈时1)先判断stack2是否为空,空则判断stack1是否为空,stack1不空则将其元素全部入栈到stack2中;2)获取stack2栈顶元素并对stack2执行出栈操作.#include...原创 2019-08-14 22:12:30 · 297 阅读 · 0 评论 -
剑指offer第一题:二维数组中的查找(c++实现)
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。第一种实现:数组bool Find(int target, int rows, int cols, int* array){ bool isFound = false; if(...原创 2019-08-13 11:03:40 · 309 阅读 · 0 评论 -
剑指offer第六题:旋转数组的最小数字(c++实现)
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。运行时间28ms,占用内存608k。#include <vector>#include <...原创 2019-08-17 21:52:53 · 218 阅读 · 0 评论 -
剑指offer第七题:斐波那契数列(c++实现)
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39#include <iostream>using namespace std;//recursive version 递归版本int Fibonacci(int n) { if (n == 0) return 0; else if (n == 1)...原创 2019-08-17 23:50:33 · 269 阅读 · 0 评论 -
八皇后
采用递归方法解决八皇后问题。原创 2016-11-22 10:19:52 · 667 阅读 · 0 评论