Git Product home page Git Product logo

100-days-of-ios-datastructure-algorithm's Introduction

为什么会有这个

这个100天的挑战本来是我自己的计划,现在将学习过程分享给大家。最新的文章更新会在我的公众号 人魔七七 首发,大家可以关注更新,并在后期还会有这个系列的电子书下载方便大家学习阅读。

App来了

APP 的名字叫“啊!算法” ;App Store下载地址:App Store地址

这个系列的加强版App要来了。一直想找一种方式来呈现他,今天终于实现了。

这里不只包含 Stack,Queue,Heap,Tree,LinkedList,Graph,Hash Table等常见的数据结构的实现。

而且包含常见的算法实现,这些算法有来自于LeetCode,看过算法的人应该都知道,LeetCode一直很少有iOS实现的方式,特别是OC语言为主的实现。

这里不只有文章介绍而且有代码可以预览查看,并且还有可交互动画展示。

人魔七七公众号

其他平台

由于微信公众号对markdown的数学公式显示有点问题,因此内容有些会同步到简书或者掘金。

简书

掘金

这是什么东西

很多技术越往底层大致皆相似,皆是数据结构与算法的缩影。这就是为什么一线互联网公司面试时候特别注重这方面的考察,国外公司甚至很多轮面试都是这方面考察。每篇文章除了有文字描述,有的还有图片以及动画方便大家理解,还会有源代码Demo,尽量用通俗易懂的方式让大家明白。

怎么做呢

每周会更新一到两篇数据结构与算法方面的东西,大家也可以跟着做,监督自己进步。

电子书书的大致介绍

封面

iOS数据结构与开发实战封面.png

目录内容

  • 为什么要学习算法呢
  • 数学公式复习
  • 常用复杂度函数公式O(?)
  • 栈的特性
  • 动画描述
  • 栈最常见的场景及算法
  • 复杂度
  • 代码实现
  • 思路描述
  • 代码实现
  • 复杂度估算
  • 步骤示意图
  • 思路描述
  • 代码实现
  • 流程图
  • 代码实现
  • 思路描述
  • GitHubDemo
  • 题目思路描述
  • 灵感示意图
  • 主要代码实现
  • 代码思路描述
  • GitHubDemo
  • 题目描述
  • 灵感示意图
  • 主要代码实现
  • 代码思路描述
  • GitHubDemo
  • 题目描述
  • 灵感示意图
  • 思路
  • 过程图
  • 主要代码实现
  • 代码思路描述
  • GitHubDemo
  • 前言
  • iOS中数组是怎么优化的呢?
  • 结合数组API来分析
  • 推荐阅读
  • GitHubDemo地址
  • 队列的特性
  • 有几个注意的地方。
  • 主要代码讲解
  • 总结
  • GitHubDemo地址
  • 双端队列的特性
  • 优化思路
  • 主要代码实现以及讲解
  • GitHubDemo地址
  • 前言
  • 树的一些应用场景
  • 一张图来描述Binary Tree
  • Binary Tree的几个常见类型
  • 和Binary Tree有关的一些公式
  • 二叉树的存储方式
  • 二叉树的周游算法
  • 练习周游算法的技巧 1
  • 练习周游算法的技巧 2
  • 练习周游算法的技巧 3
  • 延伸
  • 二叉树的构建
  • 二叉树的插入,查找
  • 二叉树的前中后序遍历
  • GitHubDemo地址
  • 题目大意
  • 灵感思路
  • 主要代码
  • 代码思路
  • GitHubDemo地址
  • 题目大意
  • 主要代码
  • 灵感思路
  • GitHubDemo地址

Day18 - 二叉树的算法实战 Sum Root to Leaf Numbers

  • 题目大意
  • 主要代码
  • 灵感思路
  • GitHubDemo地址

Day19 - 二叉树的算法实战 Path Sum III

  • 题目大意
  • 解题思路
  • 主要代码
  • 代码思路

Day20 - 二叉树的算法实战 Same Tree

  • 题目大意
  • 解题思路
  • 主要代码
  • 代码思路
  • 复杂度分析

Day21 - 二叉树的算法实战 symmetric-tree

  • 题目大意
  • 解题思路
  • 主要代码
  • 代码思路
  • 复杂度分析

Day22 - 二叉树的算法实战 二叉树的最大深度

  • 题目大意
  • 解题思路
  • 主要代码
  • 代码思路
  • 复杂度分析

100-days-of-ios-datastructure-algorithm's People

Contributors

renmoqiqi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

100-days-of-ios-datastructure-algorithm's Issues

Queue的方法isEmpty实现有些问题?

应该使用如下的方法实现吧?

- (BOOL)isEmpty
{
//    if (self.queueArray.count == 0)
    if (self.countOfQueue == 0)
    {
        return YES;
    }
    return NO;
}


- (NSInteger)countOfQueue
{
//    return self.queueArray.count;
    return self.queueArray.count - self.headIndex;
}

Day02 Demo: -[DSStack compressedStack] problem

image

I found that you didn't add the data to the new array. So I think it should be replaced like this:

- (void)compressedStack
{
    NSUInteger capacitySize = (NSUInteger)(self.maxStackSize * 0.9);
    NSUInteger stackSize = self.stackArray.count;
    if (stackSize < capacitySize)
    {
        NSMutableArray *newArray = [[NSMutableArray alloc] initWithCapacity:stackSize];
        for (id object in self.stackArray)
        {
            [newArray addObject:object];
        }
        self.stackArray = newArray;
        self.maxStackSize = stackSize;
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.