算法
oasis_android
这个作者很懒,什么都没留下…
展开
-
子串能表示从 1 到 N 数字的二进制串
给定一个二进制字符串S(一个仅由若干'0' 和 '1' 构成的字符串)和一个正整数N,如果对于从1到N的每个整数X,其二进制表示都是S的子串,就返回true,否则返回false。示例 1:输入:S = "0110", N = 3输出:true示例 2:输入:S = "0110", N = 4输出:false public b...原创 2019-04-04 10:29:23 · 257 阅读 · 0 评论 -
删除字符串中的所有相邻重复项
给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。输入:"abbaca"输出:"ca"解释:例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aac...原创 2019-06-11 14:14:38 · 1479 阅读 · 0 评论 -
括号匹配问题
public boolean isValid(String s) { HashMap<Character,Character> map = new HashMap<>() ; map.put(')','('); map.put('}','{'); map.put(']','['); Stack...原创 2019-06-11 11:16:40 · 95 阅读 · 0 评论 -
链表反转
反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL数据初始化: public class ListNode { int val; ListNode next; ListNode(int x) { val...原创 2019-06-11 10:24:34 · 419 阅读 · 0 评论 -
对字符串数组 进行排序
String[] x = {"nba","abc","cba","zz","qq","haha"}; //自己写的排序 // 排序的方法 直接用的冒泡排序 以前都是比较数字 直接用 > < = 就好了 但是 字符串的比较怎么办? 用String类提供的compareTo 方法就可以了 for(in...原创 2019-06-10 11:38:51 · 6894 阅读 · 1 评论 -
实现字符串 trim 功能
String x = " dfdfdf " ; char[] array = x.toCharArray(); int begin = 0; for(int i= 0;i<array.length;i++){ if(' '==array[i]){ continue;...原创 2019-06-10 09:50:13 · 139 阅读 · 0 评论 -
21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4网上各位大神的做法 全是递归 可是我想不到啊。。。 就自己想了一个方法 public ListNode mergeTwoLists(Lis...原创 2019-06-12 15:44:53 · 109 阅读 · 0 评论 -
选择排序
首先在排序序列中假设第一个元素是最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,如果碰到更小的元素,记录下index,本次循环过后 把第一个元素和我们记录到的最小元素做一下对比 ,如果不是同一个元素 ,交换位置 ,放到已排序序列的开头。以此类推,直到所有元素均排序完毕。 private void selectSort(int[] x){...原创 2019-04-02 15:07:52 · 116 阅读 · 0 评论 -
冒泡排序
冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。晒上我的实现: private void popSort(int[] x...原创 2019-04-02 14:55:26 · 110 阅读 · 0 评论 -
快速排序
网上各种大神的快速排序思想其实都一样的 但是实现方法的代码各有各的特点 有的人竟然能一行代码做了n件事情 跟别人的思路完全吻合其实也有难度 所以我把我的快速排序实现方法贴出来 public void quicksort(int[] x,int low,int high){ if(low>=high){ return; ...原创 2019-04-01 14:05:01 · 81 阅读 · 0 评论 -
对一个有序数组 进行逆序操作
觉得还是首尾位置的值调换比较简单直接吧 private void reverse(int[] x,int low,int high){ int nums = (high-low) >> 1; for(int i=0;i<nums;i++){ int tem = x[i]; x[i] =...原创 2019-04-04 16:00:49 · 404 阅读 · 0 评论 -
两数之和
给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]给定一个整...原创 2019-04-04 10:47:59 · 99 阅读 · 0 评论 -
堆排序
把一个数组构建为大顶堆的过程根据完全二叉树的性质 计算出来某个节点父节点的index 左孩子的index右孩子的index/** * 堆排序 * */public class MyHeapSort extends App { /** * 把数组构建为大顶堆 */ private static void...原创 2019-07-04 17:04:55 · 79 阅读 · 0 评论