easy
小陈大人
没有对象那就new一个
展开
-
169. Majority Element
原题题目描述:找出一个数组中出现超过n/2次的元素(一定有)两种技巧: 一种是把数组排好序,中位数即为所求擂台打架法,具体看代码方法一class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2...原创 2018-08-14 13:08:13 · 99 阅读 · 0 评论 -
707. Design Linked List
原题题目描述: 设计链表思路:可以自己创建链表,也可以用arryList模拟用arrayList模拟class MyLinkedList { List<Integer> list; /** Initialize your data structure here. */ public MyLinkedList() { list ...原创 2018-08-18 14:09:15 · 305 阅读 · 0 评论 -
53. Maximum Subarray
原题题目描述:定一个整数数组nums,找到具有最大总和并返回其总和的连续子数组(包含至少一个数字)。思路:这个典型的动态规划题(dp) 定义两个变量,一个变量用来记录下标移到当前位置时的最大和,而这个做法就是当前元素的值加前一个位置的最大和,若这个最大和<0,则当前元素+0(止损),若前一个位置的最大和>0,则当前位置元素值与之相加,结果就为现在位置的最大和另一个变量则时刻...原创 2018-08-16 11:02:51 · 116 阅读 · 0 评论 -
747. Largest Number At Least Twice of Others
原题题目描述: 要你判断具有唯一最大值的数组中最大值是否至少为其他元素的2倍大,是则返回其下标,不是返回-1思路:可以一次遍历找出数组中的最大值和次大值,判断最大值是否大于次大值的两倍即可class Solution { public int dominantIndex(int[] nums) { int max1=-1; int max2...原创 2018-08-16 11:40:51 · 194 阅读 · 0 评论 -
35. Search Insert Position
原题题目描述:给定排序数组和目标值,如果找到目标,则返回索引。如果没有,请返回索引按顺序插入的索引。您可以假设数组中没有重复项。思路:二分查找class Solution { public int searchInsert(int[] nums, int target) { int n=nums.length; int right=n; ...原创 2018-08-16 12:15:13 · 255 阅读 · 0 评论 -
66. Plus One
原题题目描述: 给定表示非负整数的非空数字数组,加上整数的1。存储数字使得最高有效数字位于列表的开头,并且数组中的每个元素包含单个数字。您可以假设整数不包含任何前导零,除了数字0本身思路:从后往前遍历数组,只要元素不为9,那该位置元素加1,然后返回该数组即可,但若元素是9,那把该位置的元素置0,还有种极端情况,当原数组所有的元素都是9时,则要新建一个数组,长度比原数组大1,第一个位置为1,...原创 2018-08-16 12:57:31 · 420 阅读 · 0 评论 -
237. Delete Node in a Linked List
原题题目描述:编写一个函数来删除单链表中的节点(尾部除外),只允许访问该节点。思路:由于只给了要删结点,没法获取其前驱结点,所以我们采用的策略是复制后继结点的数据域值到当前结点,然后删除后继结点即可/** * Definition for singly-linked list. * struct ListNode { * int val; * struct...原创 2018-08-16 16:52:05 · 118 阅读 · 0 评论 -
206. Reverse Linked List
原题题目描述:反转链表(没有头结点)思路:总共需要三个指针变量,一个指针指向当前结点,一个指向其前驱结点,一个指向后继结点,遍历链表,把当前结点的指针域指向前驱结点,然后三个指针向后走,遍历结束后,返回指向前驱结点的指针即可/** * Definition for singly-linked list. * public class ListNode { * int v...原创 2018-08-16 17:56:14 · 291 阅读 · 0 评论 -
21. Merge Two Sorted Lists
原题题目描述: 把两个递增有序链表,融合成一个递增有序链表思路:常规的思路就不说了,这里介绍用递归实现,代码优雅,啧啧/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNo...原创 2018-08-16 18:35:49 · 131 阅读 · 0 评论 -
83. Remove Duplicates from Sorted List
原题题目描述:有序链表中删除重复元素思路:相邻元素若相等,则让指针域指向下下个结点,不相等才让指针继续遍历链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* ...原创 2018-08-16 19:56:00 · 127 阅读 · 0 评论 -
141. Linked List Cycle
原题题目描述:判断一个链表是否有循环思路: 定义快慢指针,慢指针走一步,快指针走两步,若两者能相遇,则有循环或者用java里的哈希表,把每个节点的引用存入表中,若访问节点在表中存在则有循环,若因为指针指向空而退出,自然安不存在循环/** * Definition for singly-linked list. * struct ListNode { * int va...原创 2018-08-17 08:56:23 · 255 阅读 · 0 评论 -
203. Remove Linked List Elements
原题题目描述:删除链表中所有数据域等于给定值的结点思路: 可以用递归,若当前结点元素等于给定值则返回下一个结点,否则返回当前结点还可以自己构造头结点,进行迭代删除递归法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *ne...原创 2018-08-17 13:32:31 · 149 阅读 · 0 评论 -
234. Palindrome Linked List
原题题目描述:判断一个单链表是否为回文链表思路:先用用快慢指针,找到链表的中间位置,若链表有奇数个元素则找到中间位置的后一位,然后反转后一部分链表,反转完毕后前后两部分进行遍历比较,若数据域全相同,则是回文链表,反之则反 bool isPalindrome(struct ListNode* head) { struct ListNode* fast=head; ...原创 2018-08-17 15:45:55 · 109 阅读 · 0 评论 -
118. Pascal's Triangle
原题题目描述:构造如下三角形 思路:遍历行和列,每一层新建一个ArrayList,在行列号及列为0的地方向list里面填1,其他位置的值是其上一行同列及上一行往左偏一列的两个值之和,这两个值要从另一个l结果集合中取得,每一行的Arraylist构建完成后,丢进最终的结果集合中,最后返回class Solution { public List<List<Int...原创 2018-08-16 00:42:40 · 103 阅读 · 0 评论 -
27. Remove Element
原题题目描述:在数组中删除给定的元素,并返回新的数组长度思路:看代码class Solution { public int removeElement(int[] nums, int val) { int begin=0; for(int i=0;i<nums.length;i++){ if(nums[i]!=...原创 2018-08-15 23:32:57 · 94 阅读 · 0 评论 -
674. Longest Continuous Increasing Subsequence
原题题目描述:返回数组中最大连续递增序列的元素个数思路:定义一个计数器,当数组中后一个元素比前一个元素大,计数器自增长,同时定义一个最大长度变量,和计数器每次取较大的那个,当然若不是递增,则把计数器重置为1class Solution { public int findLengthOfLCIS(int[] nums) { if(nums.length==0...原创 2018-08-15 23:19:32 · 137 阅读 · 0 评论 -
717. 1-bit and 2-bit Characters
原题题目描述:有两个特殊字符,第一个字符可以用一位表示0。第二个字符可以用两位(10或11)表示。现在给出一个由几位表示的字符串。返回最后一个字符是否必须是一位字符。给定的字符串将始终以零结尾思路:从左到右遍历,遇到0下标增1,遇到2下标增2,然后判断最后下标若为n-1则返回truebool isOneBitCharacter(int* bits, int bitsSize) {...原创 2018-08-14 20:50:30 · 164 阅读 · 0 评论 -
122. Best Time to Buy and Sell Stock II
原题题目描述:假设您有一个数组,其中第i 个元素是第i天给定股票的价格。设计算法以找到最大利润。您可以根据需要完成尽可能多的交易(即,多次买入并卖出一股股票)。注意:您不能同时进行多笔交易(即,您必须在再次购买之前卖出股票)。思路:只需要累加相邻两天,明天比今天高出的价格即可(即只要明天比今天的价格高,就相减累加到利润中)int maxProfit(int* prices, in...原创 2018-08-14 21:41:56 · 92 阅读 · 0 评论 -
217. Contains Duplicate
原题题目描述:判断一个数组的元素是否有重复项思路:用个set集合,遍历数组时,set集合中不存在的数则加入,若set中存在则返回falseclass Solution { public boolean containsDuplicate(int[] nums) { final Set<Integer> distinct = new HashS...原创 2018-08-14 22:47:11 · 142 阅读 · 0 评论 -
167. Two Sum II - Input array is sorted
原题题目描述:在有序数组中返回数组值相加为目标值的两个下标思路:一左一右的值相加和目标值大小作比较,然后根据结果,缩小左右位置,直到相等class Solution { public int[] twoSum(int[] numbers, int target) { int l=0; int r=numbers.length-1; ...原创 2018-08-14 23:19:28 · 104 阅读 · 0 评论 -
697. Degree of an Array
原题题目描述:给定非空整数非负整数nums,该数组的度数被定义为其任何一个元素的最大频率。你的任务是找到一个(连续的)子阵列的最小可能长度nums,其具有相同的度数nums。思路定义两个map集合,一个用来记录数组各元素的首次出现的下标,另一个map用来记录每个元素出现的频率时刻更新degree,找到最大的度数,并同步更新最小长度minlen当degree与另一个元素的频率相同时选...原创 2018-08-15 01:09:52 · 103 阅读 · 0 评论 -
661. Image Smoother
原题题目描述:给你一个二维数组,每个元素的值要你按照以他为中心的8个值外加自己的值求平均值,并填在元素位置上,其中有些位置没有8个邻居,那么就找出尽可能多的邻居算平局值(包括自身),按照这个方法最终返回新矩阵思路: 先写一个判断数组下标是否越界的函数然后,遍历数组时,每个位置i,j,按照i和j分别上下左右共8个方向偏移,对每次偏移判断是否越界,由此可找出有效邻居的个数,总和,最终得到平...原创 2018-08-15 02:38:46 · 235 阅读 · 0 评论 -
830. Positions of Large Groups
原题题目描述:给你一个字符串,输出连续出现3次及以上的字符的首尾下标(注:是连续出现的位置)思路定义首尾指针,初始化都指向0下标尾指针遍历整个字符串,当首尾字符相同时,则尾指针向前走,当走到首尾字符不同时,计算首尾相隔距离当距离>=3,则把这组首尾下标添加到结果集中更新首指针到尾指针的位置重复以上步骤,直到尾指针遍历完整个字符串class Solution {pub...原创 2018-08-15 08:39:49 · 168 阅读 · 0 评论 -
876. Middle of the Linked List
原题题目描述:返回一个链表的中间位置,若中间位置有两个,则返回更后的那个思路:用快慢指针,慢指针一次移动一步,快指针一次移动两步,当快指针移动到链尾或者为null时,返回慢指针即可注:按题目意思应该要按链表元素个数的奇偶数来分,当是奇数时,直接返回慢指针,当为偶数时,应该返回慢指针的下一个元素,但我这代码不管奇偶都直接返回慢指针,竟然也过了,玄学啊!/** Definition...原创 2018-08-15 15:17:54 · 128 阅读 · 0 评论 -
268. Missing Number
原题题目描述:长为n的数组,元素值为0~n,且不重复,求你找出未曾出现的那个数字思路:借助XOR异或操作的特性即a^b^b=a的骚操作是最快的移位实现int missingNumber(int* nums, int numsSize) { int res=numsSize; for(int i=0;i<numsSize;i++){ ...原创 2018-08-15 16:46:02 · 196 阅读 · 0 评论 -
628. Maximum Product of Three Numbers
原题题目描述:在一个有正有负的数组中,返回3个数的最大乘积思路:一次遍历找出最大的3个数和最小的两个数class Solution { public int maximumProduct(int[] nums) { int max1,max2,max3,min1,min2; max1=max2=max3=Integer.MIN_VALUE;...原创 2018-08-15 17:54:25 · 127 阅读 · 0 评论 -
746. Min Cost Climbing Stairs
原题题目描述:在楼梯上,每i步,cost[i]分配了一些非负成本(0索引)。一旦您支付了费用,您可以爬一到两步。您需要找到最低成本才能到达最高层,您可以从索引为0的步骤开始,也可以从索引为1,求上楼顶的最小费用思路: 要到达当前位置,最小费用就是将当前位置费用与前两个位置的最小费用之和,最后楼顶前两个楼梯费用的最小值便是答案class Solution { public ...原创 2018-08-15 21:20:23 · 122 阅读 · 0 评论 -
121. Best Time to Buy and Sell Stock
原题题目描述:给一个股票价格数组,要你得到最大利益(最小价格买进之后,最大价格出售)思路:定义两个变量,一个累加记录相邻价格可赚利益差价,当差价<0时则置0,另一个变量存放当前最大差价class Solution { public int maxProfit(int[] prices) { int maxAll=0; int maxN...原创 2018-08-15 22:17:32 · 117 阅读 · 0 评论 -
160. Intersection of Two Linked Lists
原题题目描述:判断两个链表是否有公共结点,有则返回相交结点,否则返回null思路:我们可以设两个指针,各自指向a,b链表,两者不相等时循环,当a,b指向null时,则让它们指向另一条链表的头结点,这样当链表相交时,两指针总会在第二次遍历时在相交结点相遇,若不想交,则会在第二次遍历时同时指向null/** * Definition for singly-linked list....原创 2018-08-17 20:20:04 · 126 阅读 · 0 评论