随笔分类 - 算法虐我千百遍.搜索
搜索相关的算法题目练习
摘要:题目: 给定一个int数组,长度为n,数组中每个元素为随机整数,可能为负数,可能为0,可能为正数,要求将数组按照符号排序,所有的负数在左边,正数在右边,零在中间,负数和负数之间不需要有序,正数和正数之间也不需要有序。 数据约束: 0 0) { result[right--] = nums[i]; } } return result; } public static...
阅读全文
摘要:刷一辈子水题... AC代码: 题目来源: http://acm.nyist.net/JudgeOnline/problem.php?pid=325
阅读全文
摘要:---------------------------------------- 简单搜索+剪枝 因为考虑到可能会有多个解,所以是将中间过程保存最后才一起打印出来的 AC代码: 1: 2: import java.util.ArrayList; 3: import java.util.List; 4: import java.util.Scanner; 5: ...
阅读全文
摘要:---------------------------------------------------------------------- 解法一:空间换时间 我使用的办法也是类似于“扫描-拷贝”这种的,不过稍微有些不同,是使用了一个队列来记录空闲的位置信息,然后每次需要移动的时候出队列就可以了,这样可以做到最少的拷贝次数。 扫描到一个元素的时候情况可能有以下几种:nums[i]==0 ...
阅读全文
摘要:-------------------------------------- 一个数异或它自己会得到0,0异或n会得到n,所以可以用异或来消除重复项。 AC代码如下: public class Solution { public int singleNumber(int[] nums) { int res=0; for(Integer i:nums...
阅读全文
摘要:从右上角开始搜索,当前的元素map[x][y]和要搜索的数n有如下可能: map[x][y]==n --> 返回truemap[x][y]>n --> 向左移动map[x][y] 向下移动 搜索过程例子: AC代码: import java.util.Scanner; public class Main { public static void main(String[]...
阅读全文
摘要:-----------------------------------------n-1条边的无向连通图是一棵树,又因为树上两点之间的路径是唯一的,所以解是唯一的。(注意并不一定是二叉树,所以最好采用存储图的方式存储树,我使用的是邻接表)这个时候只需要考虑如何求解两点间的路径呢?遍历就可以了。但是应该如何遍历呢?比较容易想到的办法是分别从每个点计算到S点的路径,既然它们的终点相同,那为什么不逆向...
阅读全文