编程思想随笔记录
sipherhern
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
不用加减乘除实现加法
思路:我们一直在想,求两数之和四则运算都不能用,那还能用什么?对数字做运算,除了四则运算之外,也就只剩下位运算了。位运算是针对二进制的,我们就以二进制再来分析一下前面的三步走策略对二进制是不是也适用。 5的二进制是101,17的二进制是10001。 还是试着把计算分成三步:第一步各位相加但不计进位,得到的结果是10100(最后一位两个数都是1,相加的结果是二进制的10。这一步不计进位,因此结果仍然是转载 2016-04-06 10:36:05 · 474 阅读 · 0 评论 -
大整数相乘/相加
之前并没有接触过大整数的运算,最近刷题时遇到了,记录一下思路。 http://blog.youkuaiyun.com/oh_maxy/article/details/10903929其实具体思路和我们小学做乘法运算的时候的思路是差不多的。 比如 16 X 16,利用本题的思路就是 第一步 6*6 = 36 ① 第二步 1*6+6* 1=12 ② 第三步 1*1 = 1 ③转载 2016-03-26 10:57:17 · 454 阅读 · 0 评论 -
解决Ubuntu 14.04的enable wifi问题(ASUS F552CL)
困扰了本人许久的wifi问题终于解决,因此记录一下1. ASUS F552CL (本人所用的解决方法)先给出自己最后的解决方法,在这里找到的方法,即在终端运行如下命令(修改asus_nb_wmi.conf):(坐等高人解释原因)echo “options asus_nb_wmi wapf=1” | sudo tee /etc/modprobe.d/asus_nb_wmi.conf 2. 安装无线网卡转载 2016-04-13 10:07:29 · 1265 阅读 · 0 评论 -
螺旋矩阵 -- 腾讯16春招笔试题目
解题思路:解螺旋矩阵的最重要的地方是要知道矩阵的个数,看下图: 如果是n 是奇数,则中间只有一个数,不是一个矩阵,如果n 是偶数,则中间是一个矩阵,总的矩阵个数为n/2,后面的任务就是从外向里遍历每一个矩阵。int m = 0; for (int k = 0; k < n/2; ++ k) { //n/2矩阵个数 for (int i = 0; i <= n-1-k; ++ i)原创 2016-05-01 10:47:45 · 407 阅读 · 0 评论 -
找出数组中出现次数超过数组长度一半的元素—-腾讯
找出数组中出现次数超过数组长度一半的元素—-腾讯做法1:利用排序,找出处于排序后的数组处于中间的索引。考虑到时间复杂度的问题,应该优先快排。做法2:利用 打擂台的方式,相同的元素留下,不同的则删除。public static int moreThanHalfNum2(int[] nums) { if (nums.length == 0) return -1;原创 2016-03-25 23:53:27 · 1594 阅读 · 0 评论 -
Leetcode上List问题的总结(持续更新)
———-检测链表是否有环,并返回环开始的节点 题目142. Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cycle, return null. 解法:参考了leetcode的某个大神的解法。通过快慢指针。假设快指针的速度为2S,慢指针的速度原创 2016-07-04 19:50:37 · 550 阅读 · 0 评论 -
最长问题记录
1、最长回文字符串 例子:如”isabba” 、”abcbaXXab” 这样子的字符串,部分是回文的,求出最长的回文部分。解法一思路: 穷尽字符串。将字符串拆分成子字符串,然后对子字符串进行回文判断,并记录其长度。 public static void main(String[] args){ String str = "isabbaXXab"; int len原创 2016-09-12 14:49:47 · 722 阅读 · 0 评论 -
n&(n-1) 的作用记录
n&(n-1)作用:将n的二进制表示中的最低位为1的改为0。 应用: 1. 求某一个数的二进制表示中1的个数 while (n >0 ) { count ++; n &= (n-1); } 判断一个数是否是2的方幂 n > 0 && ((n & (n - 1)) == 0 )原创 2016-04-19 20:06:30 · 524 阅读 · 0 评论 -
用O(1)的时间复杂度删除单链表中的某个节点
给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */函数的声明如下:voi转载 2016-08-11 23:52:41 · 2834 阅读 · 0 评论 -
实现一堆栈,要求三个操作,Pop,Push,GetMaxValue,时间均为O(1)
问题描述 扩展stack的实现,完成正常的push,pop操作,新增访问最小(或最大)元素的接口Min(),使得push,pop,Min的时间复杂度都是O(1)。 问题分析 拿到这道题,我们最先的思考往往是,设计一个算法从栈中拿到最小值,所以开始考虑任何可以用来实现该功能的排序和查找算法。假设栈中有n个元素,一切排序和查找都不可能实现O(1)的时间复杂度找到最小值。再看题目,既然是扩展stack的实转载 2016-08-11 23:56:57 · 4104 阅读 · 0 评论
分享