算法
qq_43519025
这个作者很懒,什么都没留下…
展开
-
常用算法串烧
二分查找publicintsearch(int[]nums,inttarget){//writecodehereintindex=-1;intlow=0,high=nums.length-1;while(low<=high){intmid=low+(high-low)/2;if(nums[mid...原创 2022-02-16 10:16:44 · 77 阅读 · 0 评论 -
最大子序和
class Solution { public int maxSubArray(int[] nums) { int pre = 0, maxAns = nums[0]; for (int x : nums) { pre = Math.max(pre + x, x); maxAns = Math.max(maxAns, pre); } return maxAns; }}.原创 2022-01-25 12:03:33 · 106 阅读 · 0 评论 -
java打印一个字符串中重复最多的字符
方法2: public static Map<Character,Integer> getNumberOfCharacters(String str){ char [] chars = str.toCharArray(); Map<Character,Integer> map = new HashMap<Character,Integer>(); for(char c:chars){ ...原创 2022-01-21 19:48:10 · 473 阅读 · 0 评论 -
第一个只出现一次的字符
class Solution { public char firstUniqChar(String s) { Map<Character, Integer> frequency = new HashMap<Character, Integer>(); for (int i = 0; i < s.length(); ++i) { char ch = s.charAt(i); frequenc.原创 2022-01-21 19:03:30 · 298 阅读 · 0 评论 -
两个有序数组合并成一个数组
public sort( int [] A,int [] B){ A.sort(); B.sort(); int lengA = A.length; int lengB = B.length; HashSet <int> C = new HashSet<int> (); int i=0,j=0; while (i<lengA &&..原创 2022-01-14 14:34:13 · 315 阅读 · 0 评论 -
两数之和两数之和
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>(); for (int i = 0; i < nums.length; ++i) { if (hashtable.containsKey(target - num.原创 2022-01-14 14:21:11 · 3572 阅读 · 0 评论 -
字符串相加
class Solution { public String addStrings(String num1, String num2) { int i = num1.length() - 1, j = num2.length() - 1, add = 0; StringBuffer ans = new StringBuffer(); while (i >= 0 || j >= 0 || add != 0) { in...原创 2022-01-13 20:54:50 · 99 阅读 · 0 评论 -
经典算法题
【吊打面试官】头条高频面试题之leetcode(最新版)_技术交流_牛客网原创 2022-01-13 20:45:45 · 86 阅读 · 0 评论 -
两种方式实现数组中负数在左,正数在右
一、实现原理是:两个变量,一个用来记录当前的遍历点,一个用来记录最左边的负数在数组中的索引值。然后遍历整个数组,遇到负数将其与负数后面的数进行交换。遍历结束,即可实现负数在左,正数在右。此种实现原理和实现都较为简单。当正数负数交替排列时,需要进行交换的次数最大,效率最低,而且做了很多无谓的移动。因此这种方式不是很很高效。二、实现原理是:两个变量记录左右节点,两边分别开始遍历。左边的节点遇到负值继续前进,遇到正值停止。右边的节点正好相反。然后将左右节点的只进行交换,然后再开始遍历直至左右节点相原创 2021-12-07 13:53:47 · 741 阅读 · 0 评论 -
判断链表中是否有环
判断链表中是否有环_牛客题霸_牛客网我们遍历链表中的每个节点,并将它记录下来;一旦遇到了此前遍历过的节点,就可以判定链表中存在环。借助哈希表可以很方便地实现1、遍历链表,并将访问过的结点存储到哈希表中2、判断结点是否在哈希表中,若存在则返回 true3、遍历结束,则返回 falsepublic class Solution { public boolean hasCycle(ListNode head) { ListNode pos = head;原创 2021-12-06 18:38:33 · 266 阅读 · 0 评论 -
递归算法递归算法
跳台阶跳台阶_牛客题霸_牛客网class Solution {public:int jumpFloor(int number) {if (number<=1)return 1;return jumpFloor(number-1)+jumpFloor(number-2);}};原创 2021-12-06 17:09:49 · 53 阅读 · 0 评论 -
寻找两个单链表的公共节点算法
寻找两个单链表的公共节点算法_Wind_waving的博客-CSDN博客两个链表有公共节点,表示从某个节点之后所有的节点都相同(共享节点),即两个链表一起呈现Y型暴力遍历将两个链表倒置,然后遍历两个新链表,即相当于从原来的链表的尾部开始向前遍历,直到两个链表分叉的地方结束,只是此时遍历出来的是倒序的节点最普遍的解法:先把较长的链表多余长度的部分遍历完,然后再从两个链表相同长度的节点位置开始同时遍历直到共享的位置(如下图)图片来自博客C语言 寻找两个单链表的公共节点实现与原理—————————原创 2021-12-03 12:15:13 · 225 阅读 · 0 评论 -
一个数组长度101,1-100的数字随机放入数组,剩下一个数字从1-100任选,找到重复的数。
有一个数组a[100],其中存储了1-99的整数,且只有一个数字是重复的。要求实现一个算法给出这个重复的数(要求考虑时间复杂性和空间复杂性)。..._weixin_30439031的博客-CSDN博客原创 2021-12-03 12:07:45 · 335 阅读 · 0 评论 -
在排序数组中查找元素的第一个和最后一个位置
方法一:二分查找直观的思路肯定是从前往后遍历一遍。用两个变量记录第一次和最后一次遇见targettarget 的下标,但这个方法的时间复杂度为O(n)O(n),没有利用到数组升序排列的条件。由于数组已经排序,因此整个数组是单调递增的,我们可以利用二分法来加速查找的过程。考虑targettarget 开始和结束位置,其实我们要找的就是数组中「第一个等于targettarget 的位置」(记为leftIdxleftIdx)和「第一个大于targettarge...原创 2021-11-04 19:07:32 · 217 阅读 · 0 评论 -
无重复字符的最长子串
方法一:滑动窗口思路和算法我们先用一个例子考虑如何在较优的时间复杂度内通过本题。我们不妨以示例一中的字符串abcabcbbabcabcbb 为例,找出从每一个字符开始的,不包含重复字符的最长子串,那么其中最长的那个字符串即为答案。对于示例一中的字符串,我们列举出这些结果,其中括号中表示选中的字符以及最长的字符串:以(a)bcabcbb(a)bcabcbb 开始的最长字符串为(abc)abcbb(abc)abcbb;以a(b)cabcbba(b)cabcbb 开始的最...原创 2021-11-04 16:49:44 · 71 阅读 · 0 评论 -
最长回文子串
最长回文子串_牛客题霸_牛客网动态规划public class Solution { public String longestPalindrome(String s) { int len = s.length(); if (len < 2) { return s; } int maxLen = 1; int begin = 0; // dp[i][j] 表原创 2021-11-04 16:25:49 · 60 阅读 · 0 评论 -
排序算法排序算法
十大经典排序算法(动图演示) - 一像素 - 博客园冒泡排序function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]) { // 相邻元素两两对比原创 2021-11-03 14:44:23 · 58 阅读 · 0 评论 -
反转链表反转链表
反转链表_牛客题霸_牛客网class Solution { public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while (curr != null) { ListNode next = curr.next; curr.next = prev; pr原创 2021-11-03 14:30:40 · 75 阅读 · 0 评论 -
二分查找算法
int erfen(int *arr, int s, int n){ int r = s-1; int l = 0; while (l<=r) { int mid = (r+l)/2; if (n > arr[mid]) { l = mid+1; } else if (n < arr[mid]) { r = mid-1; }else{ .原创 2021-11-01 11:57:14 · 59 阅读 · 0 评论