मैं एक काम में फंस गया हूँ। शायद कोई मेरी मदद कर सकता है? मुझे अज्ञात लंबाई के दो पूर्णांक सरणियाँ दी गई हैं जैसे Array 1 = {1, 4, 7, 3} और Array 2 = {1, 7}। मुझे एक तीसरा ऐरे वापस करना है जिसमें केवल पूर्णांक हैं जो केवल सरणी में से एक में हैं। तो इस मामले में, ऐरे 3 {4, 3} होगा। मैंने कुछ इस तरह की कोशिश की है:

public static void main(String[] args) {
  int [] range = {2, 3, 4, 5, 6, 7};
  int [] excludedValues = {1, 4, 6};
  int [] exclusionRange = new int [range.length - excludedValues.length + 1];

  for (int i = 0; i < range.length ; i++) {
      if (range[i] != Arrays.binarySearch(excludedValues, range[i])) {
          exclusionRange[i] = range[i];
      }
  }

    System.out.println(Arrays.toString(exclusionRange)); // Should return {2, 3, 5, 7}
}

लेकिन यह (जाहिर है) बिल्कुल भी काम नहीं करता है। यहां आप उस सामग्री का विस्तृत विवरण देख सकते हैं जिसे वापस किया जाना चाहिए

आपकी सहायता के लिए अग्रिम धन्यवाद :)

1
Chimoke 14 जिंदा 2022, 20:22
आपका मतलब है - कोई डुप्लिकेट नहीं है ??
 – 
Antoniossss
14 जिंदा 2022, 20:24
आपकी बाधाएं वास्तव में क्या हैं? आप केवल सरणियों का उपयोग कर सकते हैं, लेकिन आपको किसी अन्य संग्रह का उपयोग करने की अनुमति नहीं है, है ना?
 – 
Chaosfire
14 जिंदा 2022, 20:48

5 जवाब

मैं बस सूचियों के जावा कार्यों में निर्मित का उपयोग करूंगा।

public static void main(String[] args)
{
    int[] range = { 2, 3, 4, 5, 6, 7 };
    int[] excludedValues = { 1, 4, 6 };
    
    List<Integer> list = Arrays.stream(range).boxed().collect(Collectors.toList());
    List<Integer> listE = Arrays.stream(excludedValues).boxed().collect(Collectors.toList());
    list.removeAll(listE);

    int[] exclusionRange = new int[list.size()];
    for (int i = 0; i < list.size(); i++)
        exclusionRange[i] = (int) list.get(i);

    System.out.println(Arrays.toString(exclusionRange));
}
1
Code ninetyninepointnine 14 जिंदा 2022, 20:45

जेएस में हम इस तरह की समस्या को हल कर सकते हैं।

const fun = () => {
  let range = [2, 3, 4, 5, 6, 7];
  let excludedValues = [1, 4, 6];
  let combineArr = [...range, ...excludeValues];
  let tempObj = {}
  for (let i =0;i<combineArr.length;i++) {
      if (tempObj[combineArr[i]]) {
         delete tempObj[combineArr[i]]
      } else {
         tempObj[combineArr[i]] = 1
      }
  }
  return Object.keys(tempObj)

  // System.out.println(Arrays.toString(exclusionRange));

}

-1
Ankit Kumar Gupta 14 जिंदा 2022, 20:34
यदि यह स्पष्ट रूप से एक जावा प्रश्न है तो जावास्क्रिप्ट समाधान क्यों पोस्ट करें?
 – 
QBrute
14 जिंदा 2022, 21:08

आपके द्वारा लिंक की गई तस्वीर के अनुसार, मुझे विश्वास है कि आप ऐसा कुछ चाहते हैं

import java.util.Arrays;

public class MyClass {
    public static int[] createRangeWithExclusions(int rangeStartInclusive,int rangeEndInclusive,int[] excludedValues){
       int sz = rangeEndInclusive - rangeStartInclusive  + 1;
       
       for(int exclude : excludedValues){
            if(exclude >= rangeStartInclusive && exclude <= rangeEndInclusive){
                sz--;
            }
        }
       
       
       int []ret = new int[sz];
       
       int idx = 0;
       for(int i = rangeStartInclusive; i <= rangeEndInclusive; i++){
           boolean include = true;
           for(int exclude : excludedValues){
               if(i == exclude){
                   include = false;
                   break;
               }
           }
           
           if(include){
               ret[idx] = i;
               idx++;
           }
       }
       
       return ret;
    }
    
    public static void main(String args[]) {
      int[] exlusions = {1,4,6};
      int [] resp = createRangeWithExclusions(2, 7, exlusions);

      System.out.println(Arrays.toString(resp));
    }
}
0
Henrique Possatto 14 जिंदा 2022, 20:49

यदि पूछे गए सरणी से सामान्य मानों को फ़िल्टर करना है, तो आप का उपयोग कर सकते हैं इस मुद्दे को हल करने के लिए अपाचे कॉमन्स कलेक्शंस लाइब्रेरी, जो बहुत सारे उपयोगिता कार्य देता है। हमारे उपयोग के मामले के लिए, आप disjunction फ़ंक्शन का उपयोग कर सकते हैं।

List<Integer> list1 = Arrays.asList(1, 3, 4, 7);
List<Integer> list2 = Arrays.asList(1, 7, 2);

System.out.println(CollectionUtils.disjunction(list1, list2)); //order does not matter here

उत्पादन

[2, 3, 4]
0
Dhawal Kapil 14 जिंदा 2022, 20:50
public static int[] findExclusionRange(int[] range, int[] excludedValues) {
    Set<Integer> unique = Arrays.stream(excludedValues)
                                .boxed()
                                .collect(Collectors.toSet());
    return Arrays.stream(range)
                 .boxed()
                 .filter(v -> !unique.contains(v))
                 .distinct()
                 .mapToInt(i -> i)
                 .toArray();
}
0
oleg.cherednik 14 जिंदा 2022, 21:16