数据结构与算法
若水无言
这个作者很懒,什么都没留下…
展开
-
快速排序
private static void quickSort(int left, int right, int[] array) { if (left > right) { return; } int leftIndex = left, rightIndex = right, flag = array[left]; while (leftIndex != rightIn...原创 2019-04-10 15:40:23 · 140 阅读 · 0 评论 -
查找字符数组中出现次数最多的字符
昨天杭州大搜车面试,面试官出了一道字符串算法题,如下:给定一个字符串数组,例如char[] chars = { 'a', 'b', 'b', 'b', 'b', 'c', 'a', 'a', 'a'};找出数组中出现次数最多的字符,如果存在相同次数的字符,取第一次出现的字符。其实一个问题的解决方案有多种,我当时说了两种(手写了第二种):先拷贝一份原数组charsCopy作为备用,然后将ch...原创 2019-05-31 11:51:04 · 1817 阅读 · 0 评论 -
leetcode-cn 回文数判断
解法基本分为两种,一类是转成字符串数组,然后逐个比较左边和右边的字符,或者是转成字符串,然后反转,再进行比较,其本质都是单个字符的比较,大家都能想到,就不写了。另一类是直接对数字进行操作,leetcode上有人例举了,还不错。我写完之后,看别人的代码,简洁好多,自叹不如(不过我这个是支持负数回文数的原创 2019-06-07 08:56:49 · 196 阅读 · 1 评论 -
leetcode-cn 有效的括号
题目描述如图:废话不多说,代码如下: private static boolean oddAndEvenNumber(int value1, int value2){ // 判断两个数是否同时为偶数或同时为奇数 return ((value1 & 1) == 1) == ((value2 & 1) == 1); } private static boolean...原创 2019-06-07 18:55:44 · 147 阅读 · 0 评论 -
leetcode-cn 删除排序数组中的重复项
题目如图:比较简单,代码如下: private static int removeDuplicates(int[] nums) { int length = nums.length; int headIndex = 0, tailIndex = 1; for (; tailIndex < length; tailIndex++) { // 比较 headIndex t...原创 2019-06-07 21:21:30 · 121 阅读 · 0 评论 -
leetcode-cn 实现strStr()
题目如图:其实这道题相当于让我们自己手写indexOf(),平时用惯了api,手写起来不是很容易,我自己就换了好几种写法,代码如下: private static int strStr(String haystack, String needle) { if (haystack == null || needle == null) { return -1; } in...原创 2019-06-08 15:16:08 · 138 阅读 · 0 评论 -
字符串的四则运算表达式
public static void main(String[] args) { // 支持括号 小数 负数 String statement = "-10/(4.5+5.5)*(-4-6+20)/-2"; // 10/(-2) 也行 System.out.println(calculate(statement)); } @SuppressWarnings("...原创 2019-06-28 21:36:45 · 1088 阅读 · 0 评论 -
leetcode - 189. 旋转数组
/** * 旋转数组:将数组的后 k 位数移至头部,前 length - k 位数移至尾部 * 要求使用原地算法,即不使用额外的空间 * @param nums 数组 * @param k 旋转的个数 */ private static void rotate(int[] nums, int k) { int length = nums.length; // 无须操...原创 2019-06-30 08:13:25 · 265 阅读 · 0 评论