普通的数据结构【数组,等其他的杂】
普通的数据结构【数组,等其他的杂】
jay编程
这个作者很懒,什么都没留下…
展开
-
01背包问题使用递归和非递归
标题:01背包问题使用递归和非递归见视频:添加链接描述F(k,w),k:前几件物品可以偷,w,当前背包容量package com.suanfa;import javafx.beans.WeakInvalidationListener;import java.util.Arrays;/**01背包问题 01背包问题:https://www.bilibili.com/video/BV1g7411B7SP?spm_id_from=333.999.0.0 **/public class原创 2022-03-06 18:09:28 · 305 阅读 · 0 评论 -
leetcode中出现执行代码和提交时候答案不一致时候,
标题:leetcode中出现执行代码和提交时候答案不一致时候,可能是你的代码某个地方写错了eg:我本来写的100,出现了题目描述的情况,改正后就没有问题了原创 2022-03-05 13:35:42 · 611 阅读 · 0 评论 -
Java实现N皇后
标题:Java实现N皇后第一个视频看到代码实现之前先看这个视频第二个视频全看完再看这个视频原创 2022-03-02 16:39:27 · 351 阅读 · 0 评论 -
n个人围成一个圈报3,或者约瑟夫环,或者丢手绢
标题:n个人围成一个圈报3,或者约瑟夫环,或者丢手绢下面这个视频,可以让你了解什么是约瑟夫环,此后,自己写代码实现一下,可以看看我的代码作为参考,参考视频:调用,n=10,编号从1-10,start = 2,从2开始报数【1 2 3】刚开始的时候,将start固定为1,就好了,//丢手帕,n个人围成一个圈,报数3,约瑟夫环 public void test02(int n,int start){ int count = 0; int[] arr = new原创 2022-03-02 15:51:31 · 1098 阅读 · 0 评论 -
Java实现凑硬币或者最少硬币数
标题:Java实现凑硬币或者最少硬币数参考视频:参考视频建议可以看完视频后,再来写代码,或者看这个blog示例:作为dp问题求解:public int coinChange(int[] coins, int amount) { if(amount == 0){ return 0; } Arrays.sort(coins); int[] arr = new int[amount + 1]; a原创 2022-03-02 14:35:12 · 8353 阅读 · 0 评论 -
java中获取字符串中的所有单词
标题:java中获取字符串中的所有单词public void fun(String paragraph) { paragraph += "."; //技巧,使得最后面都可以到else,【输入bob】 List<String> list = new ArrayList<>(); String ans = ""; StringBuilder word = new StringBuilder(); for原创 2022-02-19 16:15:01 · 2980 阅读 · 0 评论 -
leetcode中出现超时
标题:leetcode中出现超时可能是原创 2022-02-13 11:09:26 · 7189 阅读 · 0 评论 -
使用Java实现反转链表
标题:使用Java实现反转链表 public ListNode reverseList(ListNode head) { if(head == null){ return null; } ListNode p = head; head = head.next; p.next = null; while(head != null){ ListNod原创 2022-02-11 17:44:47 · 574 阅读 · 0 评论 -
java 最长公共前缀[分治及递归、二分法,普通方法]
标题:java 最长公共前缀[分治及递归、二分法,普通方法]一、题目二、题解方法一:/**方法一 * str与strs[i]比较n此 * @param strs * @return */ public String longestCommonPrefix(String[] strs) { if(null==strs || 0==strs.length) {//短路或,若前面为null,则后面都不需要判断了 return ""; } if(1==strs.leng原创 2020-07-20 11:33:50 · 238 阅读 · 0 评论 -
Java实现链表的删除,返回被删节点
标题:Java实现链表的删除,返回被删节点一、分析:删除第i个节点【传入头结点,返回被删除的节点】 (head节点指向的链表中,若只有一个节点,则删除不了该节点)【传入头结点,返回头结点】,则对于删除任意的节点都可以Java两种方式实现链表的删除,返回头结点注意若返回被删除节点时,【head节点指向的链表中,若只有一个节点,则删除不了该节点,(因为删除了,对实参中的节点没有影响,不会改变形参中节点head的指向)】形参中head的改变不会影响实参head的改变【除非改变head对原创 2020-09-28 17:40:15 · 378 阅读 · 0 评论 -
Java两种方式实现向链表中插入元素
标题:Java两种方式实现向链表中插入元素1)方式:分是否在head处进行插入在head的前面新增一个节点,使得不需要分是否是在head处插入2)方式一:分是否在head处进行插入/** * 分是否在head处进行插入 * @param head * @param info * @param index * @return */ public ListNode insert(ListNode head,int info,int index) { ListNo原创 2020-09-28 17:29:59 · 1913 阅读 · 0 评论 -
Java的链表中,删除节点返回头结点,和被删节点的区别
标题:Java的链表中,删除节点返回头结点,和被删节点的区别对于如下方法:若传入head节点,返回的是被删节点,注意改变不了传入head的指向若传入head节点,返回的是头结点,则可以改变被删节点的直线具体分析如下:...原创 2020-09-27 23:44:40 · 258 阅读 · 0 评论 -
Java两种方式实现链表的删除,返回头结点
标题:Java两种方式实现链表的删除,返回头结点Java两种方式实现链表的删除,返回头结点。方式一:分是否是删除第一个节点public ListNode del(ListNode head,int n) { //head==null if(head==null) { return head; } if(n<1) { return null;//输入不合法 } //head 1 //若是再生成一个指针放在前面,则不需要分 1 和 n if(n==1)原创 2020-09-27 23:20:57 · 1352 阅读 · 0 评论 -
java最大子序列求和,时间复杂度n,使用了分治,以及一种巧妙的方法
标题:java最大子序列求和,时间复杂度n,使用了分治,以及一种巧妙的方法题目:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。一、初级版:Java最大子序列求和二、升级版方法一:首先假设整形数组中最大值>0,故,只要一个for循环遍历,每次sum+=nums[i];若sum<0则继续遍历,若大于0,则比较sun与max,直到循环结束。其次,若整形数组中最大值小于,只要用for循环找出最大值即可。public int max原创 2020-07-23 12:27:24 · 312 阅读 · 0 评论 -
Java给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。
标题:Java给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。一、题目:【注:append().append()的速度快于+ 可以直观的感受到】给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。二、题解使用递归和String 20ms/** * 使用递归和String 20ms * @param n * @return */ public String countAndSay(int n)原创 2020-07-21 13:18:53 · 636 阅读 · 0 评论 -
Java给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
标题:Java给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。一、题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。二、题解 使用二分法class Solution { public int searchInsert(int[] nums, int target) { int i=0; int j=nums.length-1;原创 2020-07-21 13:13:19 · 2566 阅读 · 0 评论 -
Java实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。
标题:Java实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。一、题目:实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。二、题解方法一:/** * 逐个逐个比较n(n-L) 3ms * @原创 2020-07-21 13:11:14 · 1390 阅读 · 0 评论 -
Java给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度
标题:Java给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度一、可以看看:给定一个排序数组,删除重复出现的数二、题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。public int deleteGiveValNum(原创 2020-07-21 13:06:39 · 1449 阅读 · 0 评论 -
java回文数
标题:java回文数一、12321 true1221 true1231 false1 true二、题解1)方法一: /** * 方案一:将数-->字符串,前后各一个“指针”,向中间靠拢,若每次比较的字符不相等,则false * @param x * @return */ public boolean isPalindrome(int x) { String str=""+x; int i=0; int j=str.原创 2020-07-20 11:37:40 · 304 阅读 · 0 评论 -
Java,二分法查找
标题:Java,二分法查找public class TestTwoBinaryFound { public boolean towBinary(int[] arr,int target) { int i=0; int j=arr.length-1; while(i<=j) { int mid=(i+j)/2; if(target==arr[mid]) { return true; }else if(target>arr[mid]) { i=mid原创 2020-07-20 11:27:50 · 79 阅读 · 0 评论 -
java定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
标题:java定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。一、题目:给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。链接:添加链接描述二、题解方式一:复杂度为n^2public int deleteRepeatNum(int[] nums) { int i=1; int j=num原创 2020-07-20 11:25:37 · 892 阅读 · 0 评论 -
java整数反转两种方式
标题:java整数反转两种方式一、题目二、题解方法一:* sum使用了double,sum=sum*10+b; //避免sum溢出* -2147483648,* -2147483647,和2147483647只是符号不同 public int reverse02(int x) { boolean flag=false; double sum=0; //防止后面sum*10+b溢出 int b=0; if(x==-2147483648)原创 2020-07-17 09:31:26 · 1443 阅读 · 0 评论 -
Java,给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
标题:Java,给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。一、题目二、解题:方法一,使用双层for循环,暴力求解for(int i=0;i<=str.length()-2;i++) { map.put(str.charAt(i),i); for(int j=i+1;j<str.length();j++) { char key=str.charAt(j); if(!map.containsKey(key)) { map.put原创 2020-07-14 21:44:31 · 3757 阅读 · 0 评论 -
java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
标题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。一、示例二、题解暴力法:使用双重for循环,每取出一个值,遍历后面,看是否有nums[j]==target-nums[i]for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ if(nums[j]==target-nums[i]){ return new原创 2020-07-14 20:03:37 · 6152 阅读 · 0 评论 -
Java中,求两个数组的交集,使用了HashMap,排序
标题:Java中,求两个数组的交集一、分析方式一:长度较短的数组作为外层循环,使用两层for循环进行遍历同时使用标记数组nums来判断此元素是否匹配成功了【匹配成功了,则将nums[j]=true】,最后通过return Arrays.copyOfRange(results, 0, t);来返回数组 for(int i=0;i<numsMin.length;i++){ for(int j=0;j<numsMax.length;j++){原创 2020-07-13 12:16:04 · 3184 阅读 · 0 评论