![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
汐梦聆海
過去を捨てなくては 未来の場所がない
展开
-
算法作业之概率算法&近似算法(中科大黄刘生总裁版)
Ex1. 与确定性算法相比较,并给出100-10000以内错误的比例。代码:#!/usr/bin/env python# -*- coding: UTF-8 -*-'''=================================================@IDE :PyCharm@Author :Zhang Yuxuan@Date :2020-10-27 20:13@System :Mac Os@Desc :==========================原创 2020-12-12 18:10:58 · 3492 阅读 · 1 评论 -
链表逆置Python版本
该题为leetcode剑指offer24题,AC代码如下:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: prev = No原创 2020-09-11 00:23:10 · 830 阅读 · 1 评论 -
【剑指offer题解】leetcode 12,13
12. 矩阵中的路径思路:dfs回溯+剪枝即可。剪枝的目的是压缩无用的搜索空间,在已知不可能匹配成功的情况下应立即返回,节省非常多的搜索时间。时间复杂度O(3kMN)O(3^{k}MN)O(3kMN),因为不能往回找所以是3,空间复杂度O(MN)O(MN)O(MN)。代码:import numpy as npclass Solution: def __init__(self):...原创 2020-04-24 00:15:36 · 662 阅读 · 0 评论 -
【剑指offer题解】leetcode 10,11
10- I 斐波那契数列思路一:打表,O(1)时间复杂度值得拥有;思路二:每次计算出新的值判断是否大于100000007,若大于求余;思路三:求余时间较长,可改为若大于100000007,则减掉100000007。因为前面的两个数也都小于100000007,所以新的数不会大于100000007的二倍,放心的做减法就可以了。代码三:class Solution: def mod(...原创 2020-04-21 16:11:02 · 718 阅读 · 0 评论 -
【剑指offer题解】 leetcode 6,7,9
6. 从尾到头打印链表思路一:顺序遍历链表,给到list以后反转list思路二:反转链表,正向输出。个人感觉速度快一点,两个算法同样遍历一次链表,而算法一需要额外的再做list的反转。(不过提交时间反而算法一快代码一:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# ...原创 2020-04-20 22:08:29 · 717 阅读 · 0 评论 -
【剑指offer题解】 leetcode 3,4,5
3. 数组中重复的数字思路一:类似于桶排序,用空间换时间,开一个大小为n的bucket数组,令每个值为1。遍历一遍原始数组,遇到某个元素就在bucket数组的对应的位置减1,直到找到第一个小于0的。时间复杂度O(n),空间复杂度O(n)。思路二:利用set的特点,遍历一遍,判断每个元素是否出现在set中。如果没出现则加入到set,若之前出现过则返回。这种做法感觉时间比前一种稍慢(多的时间是判...原创 2020-04-20 20:23:36 · 728 阅读 · 0 评论 -
梯度下降优化算法整理:SGD、AdaGrad、RMSProp、Momentum、Adam
深度学习在执行梯度下降算法时,通常会面临一系列的问题。如陷入local minimun、saddle point,训练很慢或不收敛等诸多问题。因此需要对梯度下降算法进行优化,优化的考量主要有三个方面:batch的选择问题,对训练集进行一轮训练,每次梯度下降更新参数时需要考虑训练集中多少个样本;learning rate的选择问题,如果训练过程中学习率是定值,显然是不好的。因为训练开始阶段可能...原创 2020-04-14 20:02:35 · 1792 阅读 · 0 评论 -
Leetcode 1290
前两天做了一道题,题目如下(来自leetcode):题目并不是很难,不过走了点弯路。一开始直觉就是反转链表,这样才能判断出某一位要乘2的多少次方,于是写了如下代码:class Solution {public: int getDecimalValue(ListNode* head) { int res = 0; ListNode *pre = NUL...原创 2019-12-16 15:51:44 · 874 阅读 · 0 评论 -
快速排序
#include#define LEN 10using namespace std;int Partition(int a[],int h,int t) //找到a[h]在数组a[h,t]中的位置{ int i=h,j=t+1; int x=a[h]; while(1){ //将小于x的数交换到左边区域 //将大于x的数交换到右边区域原创 2018-02-05 21:34:59 · 285 阅读 · 0 评论 -
归并排序
归并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。合并排序算法可递归地描述如下:void msort(int a[],int b[],int h,int t){ int m; if(h==t) b[h]=a[h]; //边界条件首尾指向一原创 2018-01-22 22:59:40 · 359 阅读 · 0 评论