本文Demo的完整工程代码, 参考这里的EqualAndHashDemo 目录 为什么要有isEqual方法? 如何重写自己的isEqual方法? 为什么要有hash方法? ...
本文Demo的完整工程代码, 参考这里的EqualAndHashDemo 目录 为什么要有isEqual方法? 如何重写自己的isEqual方法? 为什么要有hash方法? ...
通知概念 苹果官方文档有一段对通知的介绍如下: A notification is a message sent to one or more observing objec...
本文阅读的objc源码 1. @autoreleasepool cc -rewrite-objc得到: 在编译结果内你能找到__AtAutoreleasePool结构体: 所...
SDWebImage是我们经常使用的一个异步图片加载库,使用时只需一行代码就能实现网络图片的异步加载、缓存(内存+磁盘),非常方便。最近工作稍清闲,就仔细研读了一下它的源码。...
Dealloc方法底层流程如下:
问题 Category的实现原理,以及Category为什么只能加方法不能加属性。 Category和Extension的区别是什么? Category中有load方法吗?l...
Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢。我们从下面几个方面探寻Runtime的实现机制。 Runtime介绍...
说到iOS多线程,大部分人应该立马就想到了GCD(Grand Central Dispatch) ,因为GCD使用起来方便,代码逻辑也清晰。但是,GCD也不是万能的,有些功能...
iOS weak 原理 直接看源码 上篇文章提到 isa 指针的结构,如果看过的人,对前面的 if 语句,一看便知,如果是非指针型 isa 并且 没有弱引用并且没有关联对象并...
一、静态库和动态库的区别 库:是资源文件和代码编译的一个集合 静态库: 静态库是在编译时,完整的拷贝至可执行文件中,被多次使用就有多次冗余拷贝; 动态库: 程序运行时由系统动...
Flutter面试题汇总 一次Flutter面试经验,这些问题你一定要知道!必问!! Flutter这么火,都有哪些面试题? 老许,你要转Flutter不要?只要你开金口,面...
@M_lear 没毛病,谢谢指正。
有两个数组a,b, 大小都是n,数组元素的值任意,无序. 要求:通过交换a b中的元素,使数组a元素的和与数组b元素的和之间的差最小题目:有两个数组a,b, 大小都是n,数组元素的值任意,无序. 要求:通过交换a b中的元素,使数组a元素的和与数组b元素的和之间的差最小 分析: 假设a中的元素之和是sum...
这个方法并不能求最优解,因为有时候,光盯住一对数据做交换,找不到能使得差更小的交换时,存在同时交换多对可以使得差更小的情况。
例子如下:
a : 12,25,98,78 sum_a=213
b : 67,37,92,23 sum_b=219
diff=219-213=6
此时遍历a,b找不到一对可交换的数据了,博主介绍的算法找到的解就是这个了。
但是,存在同时交换两对数据的情况可以使得差更小
最优解如下:
a : 12,98,67,37 sum_a=214
b : 23,78,92,25 sum_b=218
diff=4,需要同时交换两对
题目:有两个数组a,b, 大小都是n,数组元素的值任意,无序. 要求:通过交换a b中的元素,使数组a元素的和与数组b元素的和之间的差最小 分析: 假设a中的元素之和是sum...
题目: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手里没有牌.最后桌子上的牌是从1到n有序,设计程序,输入n,输出牌堆的顺序数组 这里有介绍两种方式...